【问题标题】:Iterate through all labels in a static table view遍历静态表视图中的所有标签
【发布时间】:2017-05-26 12:56:20
【问题描述】:

我有一个静态的tableViews 和一个按钮来更改应用程序的配色方案(主题)。有没有一种快速的方法可以将整个表格中的所有标签颜色从白色更改为黑色? 我在想类似以下的事情。

伪代码:

for subview in view.subviews {
   if subview is UILabel {
   subview.fontColor = .black
   }
}

因此,当橙色开关位于“Light”一侧时,我希望所有标签都变黑。我已经使用故事板来构建它,所以如果我可以避免将所有标签连接到 .swift 文件,那就太好了。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我正在为您的 sudo 代码编写代码,您需要使用递归进行迭代。

    func getLabelsInView(view: UIView) -> [UILabel] {
        var results = [UILabel]()
        for subview in view.subviews as [UIView] {
            if let label = subview as? UILabel {
                results += [label]
            } else {
                results += getLabelsInView(view: subview)
            }
        }
        return results
    }
    

    调用任何你需要改变颜色的地方

    let labels = getLabelsInView(self.view) // or any other view / table view
        for label in labels {
          label.textColor = .black
        }
    

    【讨论】:

    • 它甚至可以工作 view --->view--- label ,我的意思是内部视图中的标签
    • 这很奏效!当主题为 Light 时,我只是让前两个部分中的按钮重新显示为白色文本,但这可能是我创建的一些错误。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2015-09-08
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多