swift - 遍历 Swift 中的嵌套堆栈
问题描述
我希望能够更改 iOS 中按钮的颜色,这些按钮位于任意数量的水平堆栈内,这些水平堆栈位于单个垂直堆栈内。
我正在考虑做这样的事情
for view in self.view.subviews as [UIView] {
if let hstack = view as? UIStackView {
for btn in hstack.arrangedSubviews {
if let btn = view as? UIButton {
btn.backgroundColor = UIColor.red
}
}
}
}
但我收到一条警告线
“从未使用过不可变值 'btn';考虑用 '_' 替换或删除它”
解决方案
您有 2 个名为 的常量btn
。第一个由for
循环创建,第二个由if let
. 不使用循环for
。btn
我建议您这样编写代码:
for case let hstack as UIStackView in self.view.subviews {
for case let btn as UIButton in hstack.arrangedSubviews {
btn.backgroundColor = .red
}
}
这使用模式从数组中选择特定类型的项目。第一个循环只选择那些类型为 的子视图UIStackView
。内部循环仅选择类型为 的排列好的子视图UIButton
。
推荐阅读
- javascript - 如何在公会 discordjs V12 中从用户中删除角色?
- javascript - Variable value from hidden form field not working with if else
- android - mediapipe.components.ExternalTextureConverter.setSurfaceTextureAndAttachToGLContext returns null. makes the app crash onResume
- gitlab-api - 用于查找包含特定标签的所有问题的 Gitlab API 端点
- google-api - BigQuery 模拟您域外的用户
- python - 使用 Speechrecognition 在 Python 中将 Blob 转换为文本
- html - 链接到主页 Django
- google-cloud-platform - Google Cloud Shell 无法登录
- python - 从使用 Python 包 dd 建模的二元决策图计算最小割集
- c - 重置时未检测到 USB 设备