2017-05-26 4 views
0

Ich habe eine statische tableViews und eine Schaltfläche, um das Farbschema (Thema) der App zu ändern. Gibt es einen schnellen Weg für mich, alle Etikettenfarben in der ganzen Tabelle von Weiß zu Schwarz zu ändern? Ich denke etwas wie folgt.Iterieren durch alle Etiketten in einer statischen Tabellenansicht

Pseudo-Code:

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

Also, wenn die orangefarbenen Schalter auf der "Light" Seite ist, würde ich alle Labels wie schwarz zu gehen. Ich habe Storyboard verwendet, um es zu konstruieren, also wäre es schön, wenn ich vermeiden könnte, alle Labels mit der .swift-Datei zu verbinden.

enter image description here Light

Antwort

1

ich Code schreibe für Ihre sudo-Code müssen Sie mit Rekursion iterieren.

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 
} 

Anruf, wo jeder von Ihnen Farbe

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

Es funktioniert sogar sehen ---> Ansicht --- Etikett ändern müssen, ich meine Etiketten auch in Innenansicht –

+0

Das hat Spaß gemacht! Ich werde nur die Tasten in den ersten beiden Abschnitten zu weißem Text zurückfliegen, wenn das Thema auf Licht ist, aber das könnte ein Fehler sein, der erstellt wurde. Vielen Dank! – Steve

Verwandte Themen