Вопрос

Всякий раз, когда я нажимаю на код 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();
        }
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top