Wenn ich eine Zeile mit CommitEditingStyle aus UITableView lösche, stürzt meine App mit der folgenden Fehlermeldung ab. obwohl das Seltsame ist, ich bin das Löschen von Abschnitt 3. Die Inkonsistenz nach der Nachricht von Abschnitt 4.Absturz beim Löschen einer Zeile - Inkonsistenz im Abschnitt wird nicht aktualisiert
* Assertionsfehler in - [UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1262.60. 3/UITableView.m: 920 2010-11-22 19: 56: 44.789 bCab [23049: 207] * Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException', Grund: 'Ungültige Aktualisierung: ungültige Anzahl der Zeilen in Abschnitt 4. Die Anzahl der Zeilen in einem vorhandenen Abschnitt nach der Aktualisierung (1) muss gleich der Anzahl der Zeilen in diesem Abschnitt vor der Aktualisierung sein (0), plus oder minus der Anzahl der Zeilen eingefügt oder gelöscht von diesem Abschnitt (0 eingefügt) , 0 gestrichen). "
In Datenquelle, I Abschnitt 4 in Abhängigkeit von der Anzahl der Zeilen in Abschnitt 3 aktualisieren Wenn eine Zeile aus dem Abschnitt 3 gelöscht wird, die Anzahl der Zeilen in Abschnitt geht 4 von 0 auf 1. Dies scheint das Problem zu verursachen . Gibt es keine Möglichkeit, dies zu vermeiden?
Alle Zeiger würden sehr geschätzt werden. Danke.
UPDATE:
numberOfSectionsInTableView - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableview { return 6;
}
numberOfRowsInSection
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
bCabAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
if (section == 0) { // First name, last name
return 2;
}
else if (section == 1) { // Password
return 2;
}
else if (section == 2) { // Mobile, DOB , Gender
return 3;
}
else if (section == 3) { // credit cards
return [creditCards count];
}
else if (section == 4) { // Add credit card
if ([creditCards count] >= 3) {
return 0;
}
else {
return 1;
}
}
else if (section == 5) {
return 0;
}
return 0;
}
commitEditingStyle
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
if (indexPath.section == 3) {
// Delete the row from the data source
NSLog(@"%d %d", indexPath.section, indexPath.row);
[creditCards removeObjectAtIndex:indexPath.row];
// Delete from backend
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
//[tableView reloadData];
}
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
Ich habe es mit und ohne [tableView reloadData] mit denselben Ergebnissen versucht.
Vielen Dank für Ihre Hilfe!
Können Sie nach Ihren numberOfSectionsInTableView und Tableview: numberOfRowsInSection Methoden plz? – MathieuF
Können Sie Code zum Entfernen von Zeilen posten? –