2017-05-26 71 views
0

我有一個靜態的tableViews和一個按鈕來更改應用程序的顏色方案(主題)。對於我來說,是否有一種快速方法將整個桌子上的所有標籤顏色從白色變爲黑色? 即時思考如下。遍歷靜態表格視圖中的所有標籤

僞代碼:

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

所以當橙色開關在「光」的一面,我想所有的標籤去黑。我使用故事板來構建它,所以如果我可以避免將所有標籤連接到.swift文件將會很好。

enter image description here Light

回答

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 
    } 
+0

它會更加查看--->查看 - 標籤,我在內部視圖中的平均標籤以及 –

+0

這工作得很好!我只是讓前兩部分中的按鈕輕彈回白色文本,當主題是在光,但這可能是一些bug創建。謝謝! – Steve