2 Stimmen

cellForRowAtIndexPath wird bei tableView reloadData nicht aufgerufen

Ich habe eine UITableView auf eine Ansicht, die in Daten zu Beginn der Anwendung lädt, und dann später, wenn ein Benutzer Text in ein Feld eingibt und eine Schaltfläche drückt, ich die Datenbank neu abfragen, neu füllen das ursprüngliche NSMutableArray, das die Daten für die Tabelle speichert.

All das funktioniert perfekt. In einigen Logging-Anweisungen kann ich sagen, dass das Array die richtigen Informationen hat, die numberOfRowsInSection-Methode die richtige Anzahl zurückgibt und nach dem Reload aufgerufen wird.

Die Funktion cellForRowAtIndexPath wird jedoch beim zweiten Mal (nach dem Neuladen) nicht mehr aufgerufen, und die Tabellendaten werden nicht mehr aktualisiert.

Ich habe stundenlang im Netz gesucht und nichts gefunden, was hilft. Kann jemand helfen?

Der gesamte Code befindet sich unter: http://github.com/botskonet/inmyspot

Der spezifische Reload wird an aufgerufen: http://github.com/botskonet/inmyspot/blob/master/Classes/InMySpotViewController.m

Ungefähr Linie 94

Von: http://github.com/botskonet/inmyspot/blob/master/Classes/PlateFormViewController.m

Ungefähr Linie 101

Ein bisschen mehr Info: Sobald die neuen Daten zu dem mutablearray hinzugefügt wurde, wenn ich versuche, die Tabelle zu blättern, stirbt es schließlich mit:

"Beenden der Anwendung aufgrund einer nicht abgefangenen Ausnahme 'NSRangeException', Grund: '*** -[NSCFArray objectAtIndex:]: index (29) beyond bounds (29)'"

Ich nehme an, das bedeutet, dass die Tabellenzellen keine Daten im Array finden können, die mit der Bildlaufposition übereinstimmen, was daran liegt, dass das Array die neuen Daten hat, die Tabelle aber nicht.

0voto

thundertrick Punkte 1464

Ich hatte das gleiche Problem. Die meisten der Antworten von Google sprachen über delegate . Aber ich war sicher, dass mein delegate y data source richtig eingestellt waren.

Später fand ich heraus, dass das Problem der Rückgabewert dieser Methode ist:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

In meinem Code habe ich die Methode wie folgt umgeschrieben:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return _dataArray.count;
}

Bei der Überprüfung dieses Unterbrechungspunktes stellte ich jedoch fest _dataArray irgendwie null ist. Diese Methode sollte eine positive ganze Zahl zurückgeben, andernfalls

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

möglicherweise nicht aufgerufen werden.

Ich hoffe, es kann hilfreich sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X