Исключение при удалении строки в TableView
-
20-09-2019 - |
Вопрос
Всякий раз, когда я нажимаю на код deleteRows, я получаю исключение, сообщающее мне, что количество строк до и после обновления должно быть одинаковым.Вот официальный текст:
Причина:Недопустимое обновление:недопустимое количество строк в разделе 0.Количество строк, содержащихся в существующем разделе после обновления (3), должно быть равно количеству строк, содержащихся в этом разделе до обновления (3), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставленных, 1 удаленная).
Мой код таков:
public override void CommitEditingStyle (UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
{
if (editingStyle == UITableViewCellEditingStyle.Delete)
{
tableView.DeleteRows(new [] { indexPath }, UITableViewRowAnimation.Fade);
// Remove the step from the set of calculations
_calculation.Steps.RemoveAt(indexPath.Row);
}
}
Решение
Вероятно, вам нужно изменить номер, возвращаемый в
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section
для indexPath.section
быть на единицу ниже, чем до удаления.
Как ответили здесь: Сбой удаления строки из uitableview
Другие советы
То, что я обнаружил, сработало для меня, это удалить TableView.deleteRows(new [] { indexPath }, UITableViewRowAnimation.Исчезать);Ваш метод должен выглядеть примерно так.
public override void CommitEditingStyle (UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
{
if (editingStyle == UITableViewCellEditingStyle.Delete)
{
// Remove the step from the set of calculations
_calculation.Steps.RemoveAt(indexPath.Row);
tableView.reloadData();
}
}