Wie wird UITableViewCell aktualisiert?

8

Ich habe eine UITableView mit einer benutzerdefinierten UITableViewCell. In cellForRowAtIndexPath weise ich einer Beschriftung in jeder Zelle eine Schriftart zu, da der Benutzer die Schriftgröße jederzeit ändern kann. Um die Schriftgröße zu ändern, klickt der Benutzer auf eine Schaltfläche unter der Tabellenansicht, die eine andere Ansicht mit Einstellungen anzeigt. Sobald sie eine Schriftgröße ausgewählt haben und auf "Fertig" klicken, wird diese Ansicht entfernt und die Tabellenansicht wird erneut angezeigt. Ich zeige eine Zelle pro Sichtfläche an. Der Benutzer sieht die Änderung der Schriftart erst, wenn er zur nächsten Zelle scrollt. Die aktuelle Zelle ist diejenige, die ich aktualisieren möchte.

Ich habe versucht, ReloadData vom Einstellungsbildschirm aus zu versuchen, aber das hat nicht funktioniert. Die Tabellenansicht ist ein UITableViewController, aber viewWillAppear wird nie ausgelöst, wenn der Einstellungsbildschirm nicht mehr angezeigt wird. Ich habe versucht, die benutzerdefinierte Zelle zu einer Eigenschaft der Tabellenansicht zu machen, so dass auf sie über die Einstellungsansicht zugegriffen werden kann, und dann setNeedsDisplay und setNeedsLayout aufgerufen wird. Die haben auch nicht funktioniert. Irgendwelche Vorschläge?

    
4thSpace 04.06.2009, 14:00
quelle

3 Antworten

5

Für die Zellen, die noch da sind, müssen Sie die Schriftart des Etiketts aktualisieren. Sie benötigen eine Möglichkeit, auf das benutzerdefinierte Label in Ihrer benutzerdefinierten Zelle zuzugreifen.

Nach dem Ändern der Schriftgröße etwas tun wie:

%Vor%     
Nikolai Ruhe 04.06.2009, 14:18
quelle
12

Rufen Sie in Ihrer benutzerdefinierten UITableViewCell [self setNeedsLayout]; auf und es sollte Ihre Zelle bei der nächsten Schleife neu streichen. Ich benutze es für das asynchrone Laden von Bildern, da ich das Bild aus dem Web ziehe und es funktioniert gut.

    
bbrown 02.07.2009 22:46
quelle
0

Ich bin neugierig, wie Sie Ihren Einstellungsbildschirm anzeigen? viewWillAppear sollte unter normalen Umständen bei der Rückgabe aufgerufen werden. Benutzt du

? %Vor%

oder

%Vor%

Diese sollten beide funktionieren. Wenn Sie andererseits die Ansicht "Einstellungen" nur als Teilansicht des Fensters oder der aktuellen Ansicht oder etwas hinzufügen, wird das Entfernen von% viewWillAppear auf dem Tabellenansicht-Controller nicht aufgerufen.

Wenn Sie also keine dieser beiden Methoden verwenden, tun Sie. Wenn Sie bereits sind, dann ist das Einstellen der Schriftart der Zelle wirklich so einfach wie das Abrufen der Zelle und das Festlegen der Schriftart. Wenn Sie einen Standard UITableViewCell verwenden, wird dies mit

erledigt %Vor%

Wenn Sie eine benutzerdefinierte Unterklasse verwenden, kann ich Ihnen natürlich nicht genau sagen, wie es funktionieren soll, aber die Art, wie Nikolai es hat, ist korrekt.

    
Ed Marty 04.06.2009 16:53
quelle

Tags und Links