2009-06-24 2 views
1

Ich habe eine Tabelle, die lose auf dem DetailViewController in älteren SQLiteBooks basiert. Es ist programmatisch erstellt. Jede Zelle zeigt einen einzelnen Wert an, der beim Klicken auf einen generischen editingController anzeigt, mit dem der Benutzer diesen Wert bearbeiten kann. Ziemlich standard Cocoa-Touch Zeug ...Ändern der Eigenschaften von UILabel in einer TableViewCell

Ausgenommen ... Ich habe auch ein segmentiertes Steuerelement in der Kopfzeile des genannten TableView, die je nach Einstellung ein Attribut (textColor) auf einem UILabel in einem der 8 ändern muss ± tableViewCells in der Tabelle. Ich habe keine IBOutlets für diese TableView, weil ich es komplett im Code erstellt habe. Also, was muss ich tun in meinem (void) segmentAction: (ID) Absender Methode (ausgelöst, wenn SegmentedControl Status ändert), damit ich auf & zugreifen kann diesen Wert ändern und es für den Benutzer anzeigen? Wenn die Tabelle erstellt wurde (cellForRowAtIndexPath) wurde jedes UILabel als "Wert" bezeichnet und dann hinzugefügt: [cell.contentView addSubview: Wert].

Ich habe versucht, eine Eigenschaft des Viewcontroller Einstellung selbst, die dann während cellForRowAtIndexPath und macht das Geschäft dort Textfarbe geprüft ... und dann das Hinzufügen [self.tableView setNeedsDisplay] meine segmentAction: Methode, aber es scheint nicht zu funktionieren?!?

Irgendwelche Ideen?

Antwort

0

In der Klasse, die cellForRowAtIndexPath implementiert, können Sie auch einen Verweis auf das UILabel speichern, das beim Erstellen der relevanten Zelle benötigt wird.

Dies würde bedeuten, dass Sie das Etikett ändern und es zum Übermalen markieren könnten.

Alternativ könnten Sie ein lokales BOOL halten, um anzuzeigen, dass die Zelle anders gezeichnet werden soll - und verwenden Sie dies dann im cellForRowAtIndexPath: um es mit einem Hintergrund zu zeichnen.

Sie können diese einfacher mit dem 3.0 textlabel Objekt finden in einem UITableViewCell

+0

Doh! ein einfacher ivar in meinem Controller, der auf UILabel verweist, wenn er erstellt wurde! Funktioniert super! Danke. – Meltemi

1

Wenn Sie den Indexpfad der Zelle kennen, die Sie ändern möchten, können Sie cellForRowAtIndexPath aufrufen: um die UITableViewCell abzurufen. Sobald Sie das haben, können Sie das UILabel von ihm erhalten. Wenn Sie das UILabel-Tag beim Erstellen auf einen nützlichen Wert setzen, können Sie es dann über viewWithTag: aus der UITableViewCell abrufen.

+0

Das Problem, das ich mit diesem haben, oder zumindest meine Interpretation dieses Ansatzes ist, dass ich viel zu viel in meinem cellForRowAtIndexPath los beteiligt mit den Tisch zuerst ziehen lassen. Obwohl ich mit bedingten Argumenten kommen könnte, könnte ich das wahrscheinlich funktionieren lassen ... – Meltemi

Verwandte Themen