Wenn ich ein UITableView als Teil des sichtbaren Ansicht-Controllers habe, wie kann ich es neu laden, so dass sich die Daten, die ich betrachte, zu den neuen Daten ändern. Das Aufrufen von Neuladen scheint die Daten nicht zu aktualisieren, bis ich sie durchblättere.Wie lade ich ein UITableView neu, während ich es betrachte
Antwort
Wenn die Methode reloadData
aufgerufen wird, werden die Daten aktualisiert, sobald die Methode aufgerufen wird. Es wartet nicht auf das Scrollen der Tabelle. Stellen Sie sicher, dass die Datenquelle (Array oder Wörterbuch oder wo auch immer Sie die Werte gespeichert haben) geändert wird, bevor Sie reloadData
aufrufen.
Aktualisieren Sie die Daten aus dem Hauptthread? Wenn ja, müssen Sie die reload Methode rufen Sie die folgende Methode:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
Also für eine Tableview wäre es:
[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
einfach ein 2013-Update, sollten Sie auch sein der Lage, die Daten nur so lange zu laden, wie Sie
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
GCD ist genial nutzen!
Dies sollte die akzeptierte Antwort sein. Wenn Sie auf einfache reloadData gehofft haben, um die Benutzeroberfläche tatsächlich ohne jegliche Interaktion zu aktualisieren, dann ist dies der richtige Weg. – Markus
Können Sie weiter erklären, warum es auf dem Hauptthread ausgeführt werden sollte? – jchnxu
Der folgende Code Hilfe Ihnen Tabelle neu zu laden, während Sie, dass suchen:
[self.tableView reloadData];
Schlechte Vorgehensweise, um diese Methoden aufzurufen – AlexeyVMP
scheinen nicht mit einer benutzerdefinierten Tabelle Ansicht Zelle zu arbeiten. Die Daten ändern sich erst, wenn die Tabellenansicht gescrollt wird. Vielleicht habe ich einen Fehler in meiner benutzerdefinierten Tabellenansicht Zelle Methode. – Genericrich
Ich benutze auch eine benutzerdefinierte Zelle. Funktioniert großartig für mich. Sie müssen etwas im Code verpasst haben. Kannst du den Code posten? Vielleicht können wir etwas finden – lostInTransit
Wenn Sie eine nib-Datei verwenden, um Ihre Ansicht zu entwerfen, vergessen Sie nicht, die Tabelle, die Sie aufrufen, reloadData im Code an die Tabelle in Ihrer Schreib-Spalte anzuschließen. Es passiert leicht, da Sie auch Delegate und Datenquelle verbinden müssen. –