swift - 在 Swift 中循环遍历嵌套堆栈

标签 swift for-loop uiview

我希望能够更改 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
            }
        }
    }
}

但是我收到一条警告线

"Immutable value 'btn' was never used; consider replacing with '_' or removing it"

最佳答案

你有 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 的 subview 。内部循环仅选择类型为 UIButton 的已排列 subview 。

关于swift - 在 Swift 中循环遍历嵌套堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54836696/

相关文章:

performance - MATLAB 向量化 : creating a cell array of neighbor index arrays

objective-c - 为响应触摸而设置动画(简单形状)的最佳方式是什么?

iphone - 在 Swift 中使用图像设置 map 注释

swift - 如何在 IBAction 方法中添加按钮目标函数

latex - LaTeX 中的迭代

ios - 如何在 UIActionSheet 中的文本旁边插入图像?

ios - 在独立 View 上应用自动布局

ios - 将 JSON 结果的 setValue(纬度/经度坐标为 Double)设置为 Swift 中的 CoreData

swift - 在 Swift 中从 NSTextField 获取 NSImage

java - for循环计算Java中的音节