Immer seltsamen Fehler beim nachladen Abschnitt index?
Ich bin mit dem iPhone SDK und Objective-C und
Ich bekomme diese Fehlermeldung:
Assertionsfehler in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-984.38/UITableView.m:774
2010-01-08 13:24:16.842 MyAPP[628:20b] Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Ungültiges update: ungültige Anzahl von Zeilen, die in Abschnitt 1. Die Anzahl der Zeilen, die in einer bestehenden Abschnitt nach dem update (1) muss gleich sein der Anzahl der Zeilen in diesem Abschnitt, bevor Sie das update (0), plus oder minus die Anzahl der Zeilen, die eingefügt oder gelöscht, der Abschnitt (0 eingefügt, gelöscht 0).
Hier ist mein code zu erweitern Abschnitten:
- (void)checkAction:(id)sender
{
//The button is added as subview on a view and the view is section header custom view
UIButton *Button = (UIButton*)sender;
NSLog(@"Button Tag=%d",Button.tag);
if([[self.MySectionIndexArray objectAtIndex:Button.tag] isEqualToString:@"UP"])
{
[self.MySectionIndexArray replaceObjectAtIndex:Button.tag withObject:@"DOWN"];
[ButtonDrop setBackgroundImage:[UIImage imageNamed:@"Up.png"] forState:UIControlStateNormal];
[TableDashBoard reloadSections:[NSIndexSet indexSetWithIndex:Button.tag] withRowAnimation:UITableViewRowAnimationFade];
}
else
{
[self.MySectionIndexArray replaceObjectAtIndex:Button.tag withObject:@"UP"];
[ButtonDrop setBackgroundImage:[UIImage imageNamed:@"Down.png"] forState:UIControlStateNormal];
}
NSLog(@"self.MySectionIndexArray ka title = %@ at index Number=%d",self.MySectionIndexArray,Button.tag);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, weil man
reloadSections
beim ändern der TabelledataSource
Inhalt, so dass es Berichte, die eine unterschiedliche Anzahl von Zeilen übertableView:numberOfRowsInSection:
.Überprüfen, was Sie nach Ihrer
UITableViewDataSource
tableView:numberOfRowsInSection:
. Meine Wette ist, dass du am Anfang 0 zurück für Abschnitt 1, aber, wenn Sie anrufenreloadSections
Sie 1 zurück Abschnitt 1.Wenn dies tatsächlich der Fall ist, können Sie
UITableView
MethodenbeginUpdates
,insertRowsAtIndexPaths:withRowAnimation:
undendUpdates
.dataSource
's Inhalt, d.h. was Sie nachtableView:numberOfRowsInSection:
- das ist direkt so von der Fehlermeldung, die du hast.reloadData
funktioniert zeigt an, daß wir auf dem richtigen Weg bist mit dem Versuch, um zu sehen, wastableView:numberOfRowsInSection:
gibt. Dies ist, weil die BerufungreloadSections
"bewirkt, dass die Tabelle anzeigen, um zu Fragen, seine Daten Quelle für neue Zellen für den angegebenen Abschnitten. Die Tabelle-Ansicht animiert das einfügen von neuen Zellen, wie es belebt die alten Zellen aus." Und reloadData nur lädt die Daten ohne Animationen, und "sollte nicht aufgerufen werden, in die Methoden einfügen oder löschen von Zeilen, besonders in der animation block implementiert, der Aufrufe zu beginUpdates und endUpdates"Ich hatte ein ähnliches problem. Ich war sicher, dass wird die Aktualisierung der Datenquelle.
Aber schließlich ich erkannte, dass ich tatsächlich ändern 2 Abschnitten, aber die Aktualisierung der Datenquelle für nur eine.
[reloadSections:withRowAnimation]
.