[tableView reloadData]; funktioniert nicht, bis ich die TableView scrolle
Habe ich eine einfache app, der downloads-Suchergebnisse in XML, wenn der Benutzer Typen in einer UISearchBar
. Das laden+Parsen ist mit einem Gewinde und sobald es fertig feuert eine NSNotification
zu sagen, die ViewController mit der Tabelle anzeigen zu [tableView reloadData];
Hier ist der code, erhält die Benachrichtigung ausgelöst, sobald die Ergebnisse sind in:
- (void)receivedResults:(id)notification {
results = [notification object];
DLog(@"Received %i results",[results count]);
[[self tableView] reloadData];
}
Bekomme ich die log-Ausgabe "Erhielt 4 Ergebnisse", aber die Tabelle-Ansicht nicht die Daten neu laden, bis ich scrollen/ziehen Sie es ein paar Pixel. Ich bin mit dem eingebauten UITableViewCellStyleSubtitle
Zell-Stil und im nicht die änderung der Höhe oder ding etwas Phantasie mit der Tabelle anzeigen.
Was mache ich falsch?
InformationsquelleAutor der Frage Maciej Swic | 2011-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war in der Lage, die gleiche Sache zu arbeiten. Aber das Problem war, dass der laden Daten, die benötigt werden, um aufgerufen werden, die auf den Haupt-thread.
Ich denke, das ist praktischer als die performSelectorOnMainThread option
InformationsquelleAutor der Antwort The Lazy Coder
Call
statt
InformationsquelleAutor der Antwort Andrew
Mein problem war, dass ich die Buchung eine NSNotification aus einem hintergrund-thread. Um dies zu vermeiden, einfach wickeln Sie Ihre postNotificationMethod in einem dispatch_async Methode wie diese:
Wenn diese Meldung empfangen wird, die
tableView.reloadData
aufgerufen wird, werden auf dem Haupt-thread.InformationsquelleAutor der Antwort BalestraPatrick
Ich habe das gleiche problem, und ich habe versucht, alle die Lösung, die ich finden kann google. Aber Alle von Ihnen funktionieren nicht.
Endlich fand ich, dass ich hinzufügen Beobachter vor der viewDidLoad -, und dann [self.tableView reloadData] funktioniert nicht.
Erste nenne ich die setObserverForUserInfoDatabase in der viewDidLoad von meinem root-navigation-view-controller. Weil ich denke, hiess es früher. Die Funktion ist wie folgt:
Dann bewege ich den code in die viewDidLoad der viewController selbst.
Und dann funktioniert alles einwandfrei.
Weiß ich nicht den Grund noch nicht. Wenn jemand weiß, bitte mir sagen.
InformationsquelleAutor der Antwort wgr
reload Ihre
tableView
imviewWillLayoutSubviews
InformationsquelleAutor der Antwort Krishna Kirana