2015-11-04 3 views
0

У меня есть следующий код, написанный для моей кнопки удаления, чтобы удалить выбранные строки из UITableView.Удаление строк вручную из UITableView в Xcode 6

-(IBAction)deleteItems:(id)sender { 

NSArray *selectedCells = [self.autoCompleteView indexPathsForSelectedRows]; 
NSMutableIndexSet *indicesToDelete = [[NSMutableIndexSet alloc] init]; 
for (NSIndexPath *indexPath in selectedCells) { 
    [indicesToDelete addIndex:indexPath.row]; 
} 
//arrayFromPlist is NSMutableArray 
[autoCompleteView beginUpdates]; 
[autoCompleteView deleteRowsAtIndexPaths:selectedCells withRowAnimation:UITableViewRowAnimationAutomatic]; 
[autoCompleteView endUpdates]; 
[selectedObjects removeObjectsAtIndexes:indicesToDelete]; 
[autoCompleteView reloadData]; 

[alertMsg deleteConfirmation:@"Do you want to delete these items?"]; 

}

Пожалуйста, проверьте изображение для моего UITableView и кнопка удаления. Я сохранил свойство «Редактирование» моего UITableview «Множественный выбор во время редактирования» в раскадровке.

enter image description here

Я получаю следующее сообщение об ошибке, когда я нажмите кнопку Удалить, показанную на экране.

Завершение приложения из-за неотображенного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (5), должно быть равно числу строк, содержащихся в этом разделе перед обновлением (5), плюс или минус количество строк, вставленных или удаленных из этого раздела (вставлено 0, 2 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 переместился, 0 отошел).

Не уверен, что такое моя ошибка в коде кнопки удаления.

ответ

1

Одна из проблем заключается в том, что вы удаляете ячейки, прежде чем удалять соответствующие данные из модели. Это неверно. Всегда меняйте модель сперва; затем измените ячейки таким образом, чтобы они соответствовали модели.

+0

@matt ... Я положил [selectedObjects removeObjectsAtIndexes: indicesToDelete]; ниже BeginUpdates, но все равно получите ту же ошибку, что и в вопросе. – TheGaME

+0

Я не знаю, что такое 'selectedObjects' или как поддерживается ваша модель. Но вы должны удалить строки из модели, прежде чем запускать «beginUpdates». – matt

+0

У меня есть 2 изменяемых массива: selectedObjects будет содержать элементы для удаления, а autoCompleteData содержит исходные данные, которые будут отображаться в виде таблицы. – TheGaME

Смежные вопросы