2010-10-01 10 views
5

Ich habe einen Bildschirmauszug beigelegt, damit die Dinge leichter zu befolgen sind.iPhone, warum funktioniert UITableView reloadData nicht?

Ich habe meine Steckdosen für Datenquelle und Delegate angeschlossen und ich habe eine Steckdose für meine Tabellenansicht erstellt, aber reloadData funktioniert nicht?

Idealerweise möchte ich reloadData nur aufrufen, nachdem die Ansicht einmal geladen wurde?

alt text

Antwort

6

Erstellen Sie eine Eigenschaft für Ihre UITableView und die Eigenschaft als IBOutlet verwenden, die Ivar mit direkt nicht der richtige Weg, es zu tun. Haken Sie die Dinge wieder an und debuggen Sie, um zu sehen, ob Ihr UITableView nicht null ist.

Setzen Sie einen Haltepunkt in die UITableView Datenquellenmethoden, um zu sehen, ob sie aufgerufen werden, wenn sie sind, überprüfen Sie, ob Ihr transactionsArray tatsächlich Elemente enthält.

Wenn das nicht hilft, müssen Sie weitere Informationen wie die aufgerufenen Methoden und mehr Code bereitstellen.

+0

Überprüfen Sie, ob Ihr Array tatsächlich neue/aktualisierte Daten enthält, wenn Ihr reloadData aufgerufen wird. –

+0

Ich habe ein Debugging durchgeführt, das Array wurde aktualisiert, aber cellForRowAtIndexPath wird nicht aufgerufen, wenn ich zur Ansicht zurückkehre. Wie gesagt, es läuft das erste Mal, wenn die Ansicht geladen ist, aber nicht danach. – Jules

+0

Sie müssen Code-Snippets veröffentlichen, damit wir sie ansehen können. –

2

Wenn die Hauptansicht Ihres UITableViewControllers Ihre Tabellenansicht ist, können Sie die Verwendung von IBOutlets vermeiden und direkt die Eigenschaft tableView Ihres Controllers verwenden. So:

[self.tableView reloadData];

+0

Ok, ich habe mich in self.tableview geändert, ich habe die Eigenschaft, outlet an Ort und Stelle, muss ich etwas anderes in IB haken? Auch wenn ich Beispiele ansehe, die ich gesehen habe, dass die Datenquelle und der Delegierte nicht angeschlossen zu sein scheinen, wie auf dem Bildschirm-Dump gezeigt, habe ich sie angeschlossen. – Jules

+0

Wenn ich wieder auf deinen Screenshot schaue, sehe ich, dass du eine UITableView in einer generischen UIView hast. Dies kann zu Problemen führen. Ich empfehle Ihnen, Ihren Controller zu einem generischen UIViewController zu machen, der TableViewDelegates implementiert. Der View-Ausgang sollte auf die Haupt-UIView eingestellt sein, und (wie Sie es getan haben) sollte ein Ausgang auf Ihren UITableView zeigen. Setzt die Referenzausgänge erneut auf Ihren Controller und versucht es erneut. – MaxFish

+0

Wenn die neue Zeile hinzugefügt wird, wird das TableView neu geladen, stellen Sie sicher, dass die Daten nach der Bearbeitung korrekt bearbeitet werden. – MaxFish

Verwandte Themen