iOS UITableView "'Versuch, zwei Animationen für die Zelle zu erstellen'"
Ich habe eine customTableView Zelle - ich möchte nur update auf Zelle (basierend auf einem Netzwerk-event occuring).
Also, wenn ich zuerst die Netz Anruf, den ich machen:
- (void)makeNetworkCall
{
[self.tableView beginUpdates];
//MAKE_NETWORK_CALL
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates]; //SIGABRT OCCURS HERE ON SECOND CALL
}
- (void)networkDataReturned:(NSDictionary*)dataReturned
{
//UPDATE_TABLE_VIEW_DATA_MODEL
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
}
Das klappt perfekt, das erste mal das Netzwerk-Ereignis wird aufgerufen, wenn die Zelle abgegriffen wird (also Aufruf der Netzwerk-Ereignis wieder, das Ergebnis wurde nun zwischengespeichert) bekomme ich die folgende Fehlermeldung:
2011-06-22 11:19:11.262 App[3991:707] *** Assertion failure in -[_UITableViewUpdateSupport _setupAnimationsForExistingVisibleCells], /SourceCache/UIKit/UIKit-1448.89/UITableViewSupport.m:288
2011-06-22 11:19:11.327 App[3991:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempt to create two animations for cell'
*** Call stack at first throw:
(
0 CoreFoundation 0x32c7664f __exceptionPreprocess + 114
1 libobjc.A.dylib 0x36eb9c5d objc_exception_throw + 24
2 CoreFoundation 0x32c76491 +[NSException raise:format:arguments:] + 68
3 Foundation 0x32894573 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 62
4 UIKit 0x35f59d3b -[_UITableViewUpdateSupport(Private) _setupAnimationsForExistingVisibleCells] + 402
5 UIKit 0x35f58b81 -[_UITableViewUpdateSupport initWithTableView:updateItems:oldRowData:newRowData:oldRowRange:newRowRange:context:] + 296
6 UIKit 0x35f57dc1 -[UITableView(_UITableViewPrivate) _updateWithItems:withOldRowData:oldRowRange:newRowRange:context:] + 972
7 UIKit 0x35f57473 -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] + 4750
8 UIKit 0x35f612f9 -[UITableView endUpdatesWithContext:] + 28
9 UIKit 0x35f612d5 -[UITableView endUpdates] + 16
10 App 0x0005a033 -[CustomTableViewController tableView:didSelectRowAtIndexPath:] + 574
InformationsquelleAutor der Frage DAve | 2011-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Niemandem, dass trifft auf diese situation wieder, dass es sich nicht wiederholt indexPaths in das array übergeben wird, um neu zu laden, zu löschen oder die insertRowsAtIndexPaths.
InformationsquelleAutor der Antwort jjramos
Es ist schwer zu verstehen, wie Sie sind, verursacht, dass die Fehlermeldung, aber versuchen Sie Ihre Tabelle neu laden code in eine separate Methode, und rufen, wo Sie müssen die zwei identischen code-Blöcke jetzt. Das könnte zu beheben, was scheint, eine Art seltsame Rasse der Bedingung, dass
UITableView
soll herausfiltern, die auf Ihre eigenen sowieso.InformationsquelleAutor der Antwort Abraham Vegh
Übernehmen
self.arTableData
ist ein veränderliches array der Tabelle &tableView
ist eine Instanz vonUITableView
. Angenommen es sind 10 Zeilen ( was bedeutet, dass 10 Objekte im array ) intableView
.Ich tun, implementieren Sie folgenden code zum löschen von Zeilen animiert.
Möchten Sie mehrere Zeile löschen, versuchen Sie, entfernen von Zeilen eins nach dem anderen & nicht alle auf einmal.
Löschen mehrerer Zeilen ( einschließlich animation ) könnte Absturz.
Aber während Sie Zeilen einfügen, die Sie übergeben können, gesamte array einfügen & UITableView wird sicherlich führen Sie die animation.
Trick funktioniert bei mir ohne Probleme. Hoffe, es funktioniert für Sie. Viel Glück.
InformationsquelleAutor der Antwort Sagar R. Kothari
Habe ich diese versucht zu entfernen, die Zeile mit dem index -1, die in einem Abschnitt.
InformationsquelleAutor der Antwort vib
In meinem Fall habe ich eine Tabelle anzeigen von restaurants mit Ihrer Entfernung zum aktuellen Standort. Die Distanz wird aktualisiert, wenn es erhält neuen Standort der Benutzer ab. Dies bewirkt, dass Zellen, die aktualisiert werden, in bestimmten Momenten. Wenn der Benutzer erneut, um die Zellen zufällig zu der gleichen Zeit wie die Zellen, die aktualisiert werden. eine Zelle wird manipuliert, von der zwei Positionen. Dies verursacht, stürzt das Programm ab. Also habe ich nur überprüfen, ob es den Bearbeiten-Modus, nicht update der Ferne. Ich hoffe, dass dies helfen könnte. Dies ist eine spezielle Bedingung der Antwort von @jjramos
InformationsquelleAutor der Antwort XiuXiu.