UITableView ist reloadRowsAtIndexPaths: (NSArray *) indexPaths Versagen zu verursachen, neu laden, es sei denn, Sie nennen es zweimal?
Habe ich ein UITableViewController Verwaltung einer UITableView-Objekt in einer iPad-app. Die Tabellenansicht ist verbunden mit einem Recht komplizierten Konstellation von anderen Objekten. Ich habe ein problem, wenn ich bitten es neu zu laden Zeile wie folgt:
//indexPath is an NSIndexPath with indexes 0 and 0. At the moment, this is the only cell in the table view.
NSArray *array = [NSArray arrayWithObject:indexPath];
[self.tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone];
Das problem ist, dass die Zeile nicht neu laden. Es ist nie ein Rückruf cellForRowAtIndexPath.
Das verrückte an der Sache ist, dass, wenn ich rufe reloadRowsAtIndexPaths zweimal, das zweite Anruf löst den reload:
//indexPath is an NSIndexPath with indexes 0 and 0. At the moment, this is the only cell in the table view.
NSArray *array = [NSArray arrayWithObject:indexPath];
[self.tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone]; //does not reload
[self.tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone]; //does reload
Frage ich mich, ob jemand hat jemals erlebt einen Fehler wie diese, und wenn ja, was war die Ursache?
- machst du das in einigen hintergrund-thread?
- Habe eine test-Fall?
- Haupt-thread. Wenn Sie von "test cases", meinst du ein einfaches Beispiel, das veranschaulicht, das gleiche, Nein, ich nicht, und ich wünschte, ich Tat.
- Habe das gleiche Problem, ich bin mit Xcode 6.3.2 und swift 1.2 und kann nicht laden bestimmte Zeile aus einem Anruf. Versuchte fast alles, aber die Zelle erneuert sich nur von der zweiten sequentiellen reloadRowsAtIndexPaths nennen.
- Bekam keine Antwort, es zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
reloadRowsAtIndexPaths:...
funktioniert nur, wenn dazwischen gewickelt Aufrufe:Außerhalb, dass das Verhalten undefiniert ist. (und wie hast du Sie entdeckt, ist ziemlich unzuverlässig).
Edit: zitiere den relevanten Teil der "Table View Programming Guide for iPhone OS":
reloadData
ist die einzige reloadXXX Methode, muss nicht eingewickelt werden, mit begin/endUpdates...Ich weiß, das Thema ist sowas von alt, aber ich stieß auf das gleiche Problem und eine einfache Lösung. Ich hatte eine Tabelle anzeigen und als ich reloadData und/oder reloadRowsAtIndexPaths, die Methode tableview cellForRowAtIndexPath würde nicht ausgelöst.
Es stellt sich heraus, ich hatte nicht süchtig, meine tableview IBOutlet im Interface Builder - sobald das angeschlossen war alles gefeuert, wie erwartet. Es ist immer die kleinen Dinge...
Auch, wie andere erwähnt haben, wenn Sie nur das eine nennen, wickelte Sie in begin/endUpdates ist nicht notwendig.