Исключение при удалении строки в TableView - PullRequest
1 голос
/ 11 февраля 2010

Всякий раз, когда я нажимаю код 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);
        }
    }

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

Возможно, вам нужно изменить число, возвращенное в

- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section

для indexPath.section на единицу меньше, чем до удаления.

Как здесь ответили: Удалить строку из сбоев uitableview

0 голосов
/ 13 февраля 2018

Что я нашел, что работало для меня, так это удалить tableView.DeleteRows (new [] {indexPath}, UITableViewRowAnimation.Fade); Ваш метод должен выглядеть примерно так.

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();
        }
    }
...