2016-06-10 15 views
1

Ich habe eine Tonne Etiketten & Web-Ansichten in einer Zelle, die ich ausblenden möchte, wenn der Benutzer im Hochformat ist. Ich habe folgendes versucht:Zugriff auf alle UILabel-Objekte in einer TabelleView-Zelle

for subview in cell.subviews { 

       print("i am a subview") 
       if let label = subview as? UILabel { 

        label.hidden = true 
       } 
      } 

Ich bekomme drei Subviews, aber das sind keine UILabels. Im Allgemeinen habe ich> 10 Labels, weshalb dieser Code nicht zu funktionieren scheint. Gibt es Hinweise, wie Sie auf diese Labels in einer Schleife zugreifen können? Danke ...

Antwort

1

erhalten Sie Subviews von UITableViewCell zugreifen, aber Sie müssen Subviews von content von UITableViewCell zu bekommen.

For Example: cell.subviews[0].subviews wird tun.

+0

Endlich! Danke ... Habe meinen Tag gemacht. – Burkart

+0

warum würden Sie nicht die explizite Referenz verwenden, können Sie nicht wirklich garantieren, dass es die erste Unteransicht ist ... – Wain

+0

erste Unteransicht wird immer Contentview von UITableViewCell –

0

Für mich selbst, löste ich ziemlich dasselbe Problem, indem ich labelsArray: [UILabel] Eigenschaft in der Zelle deklarierte und Zeiger auf Aufkleber beim Errichten zu diesem Feld hinzufügte.

Andere Möglichkeit - mit Tags. Da das Setzen desselben Tags auf verschiedene Ansichten eine schlechte Stilcodierung ist, können Sie einige Formeln bereitstellen: Nehmen Sie beispielsweise an, dass Ihre Labels die Tags 1000, 1001, 1002 ... haben. Dann können Sie alle Etiketten von Zyklus aufzählen, Ansicht von 1000 mit dem Tag erhalten, bis Sie nil

+0

können Sie auch eine Steckdose Sammlung für diese – Wain

+0

@Wain verwenden, wenn Sie Xib/Storyboards verwenden, ja. –