Я немного озадачен этим после прочтения документации Apple и поиска в Google. Суть проблемы в том, что я знаю, что мне нужно удалить из UITableView и источника данных (в данном случае NSMutableArray), но это не позволит мне сделать это независимо от того, в каком порядке я это делаю.
- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[myMutableObjectList removeObjectAtIndex:indexPath.row];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// not used
}
}
Независимо от того, какой порядок я использую для этих двух:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[myMutableObjectList removeObjectAtIndex:indexPath.row];
Он либо жалуется на то, сколько осталось элементов, либо говорит, что удаление не произошло.
"(Количество) до удаления должно совпадать (количество) после удаления минус сколько бы вы ни удалили 0 вставок 1 удаление"
Сначала [tableView ....] говорит, что счет тот же, с 1 желаемым удалением.
Сначала [myMutableObjectList ...] говорит, что счетчик на 1 меньше (хорошо!), Но удаление должно произойти.
Если у меня не получится, в любом случае, что мне делать?
Обновление:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if([myMutableObjectList count] == 0) {
return section;
} else {
return 4; //4 variables in myObject
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSLog(@"Size of list: %d", [myMutableListList count]);
if([myMutableList count] == 0) {
return 100;
} else {
return [myMutableList count];
}
}