Удаление нескольких строк при добавлении ни одной в UITableView - PullRequest
0 голосов
/ 14 октября 2010

Разве невозможно удалить несколько строк из UITableView при добавлении новых строк? Я думал, что была поддержка для пакетной вставки и удаления, но похоже, что вы можете настроить размер таблицы только на 1 элемент из предыдущего подсчета.

Когда я пытаюсь удалить целый ряд строк, не добавляя ничего нового, я получаю сообщение об ошибке:

Неверное обновление: неверное количество строк в разделе 2. Количество рядов содержится в существующем разделе после обновления (3) должно быть равно количество строк, содержащихся в этом раздел до обновления (0), плюс или минус количество вставленных строк или удалено из этого раздела (1 вставлено, 0 удалено). '

Вот как я делаю удаление:

// The section initially has 7 rows. I want to remove 5 of them.
// The underlying table store data has been cleared of the 5 rows
// content as of this point

int newRowCount = 5;
int aSection = 2;

// Create the index paths of the rows I want to delete

NSMutableArray *deletePaths = [NSMutableArray arrayWithCapacity:newRowCount];
for (int ix = 0; ix < newRowCount; ++ix)
{
    [deletePaths addObject:[NSIndexPath indexPathForRow:ix inSection:aSection]];                
}

// Start the updates
[aTableview beginUpdates];

if (deletePaths && [deletePaths count] > 0)
{
    [aTableview deleteRowsAtIndexPaths:deletePaths 
                      withRowAnimation:UITableViewRowAnimationNone];
}

[aTableview endUpdates];

Документация Apple UITableView, на которую я подписан: текст ссылки

Ответы [ 2 ]

0 голосов
/ 15 октября 2010

Я только что имел дело с этой же ошибкой час назад. Помимо удаления самих строк, вам необходимо удалить удаленные объекты из массива данных (при условии, что вы используете массив данных для хранения списка материалов, отображаемых в табличном представлении). Убедитесь, что вы удалили объекты из массива данных до , когда вы вызываете deleteRowsAtIndexPaths. Вызов этого метода приводит к вызову numberOfRowsInSection; и, как уже упоминалось, вам нужно убедиться, что этот метод не возвращает то же количество строк, которое было до оператора delete.

0 голосов
/ 14 октября 2010

Немного догадка, поскольку я не вижу эту часть кода, но убедитесь, что

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

возвращает правильное число.Похоже, вы удаляете строки из раздела без этого метода, возвращая новое количество строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...