Пакетная вставка и удаление + Перезагрузка старых ячеек = Исключение - PullRequest
1 голос
/ 07 июля 2010

Итак, у меня есть UITableView, в котором я делаю пакетную вставку / удаление / перезагрузку в.Время от времени данные списка меняются, поэтому я периодически обновляю различия в списке.Я в основном вставляю новые строки, удаляю строки, которых больше нет, и перезагружаю строки, которые существуют как в старых, так и в новых данных.Например:

До этого данные списка выглядели так:
0: яблоко
1: банан
2: морковь

После этого данные списка выглядят так:
0: банан
1: морковь
2: собака
3: слон

Это приводит к удалению строки 0, перезагрузке строк 1 и 2 и вставке в строки 2 и3. Порядок, в котором я вызываю методы, также выглядит следующим образом: удалите, перезагрузите, затем вставьте строки.

Однако это приводит к исключению, поскольку я выполняю две разные анимации для строки 2 (перезагрузка и вставка).Это проблема заказа или мои indexPaths неверны?Примечание: мне нужно перезагрузить старые ячейки, так как данные для этой строки могли измениться, но не должны быть представлены вставкой / удалением.

Редактировать: Как ни странно, эта ошибка толькопроисходит в версиях iOS раньше, чем iOS4.

1 Ответ

1 голос
/ 07 июля 2010

Я бы сказал, удалить 0 и вставить 3 и 4. Перезагрузка не требуется.Порядок, в котором вы отправляете обновления, не имеет значения.Убедитесь, что ваша модель отражает изменения, прежде чем рассказывать об обновлениях.Завершите вызовы с помощью -beginUpdates: end -endUpdates:.

Вот ссылка для пакетного обновления, см. Листинг 7-8: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW16

Подсказка видео WWDC тоже хорошая,Вы хотите обратить внимание на сессию 128 - Мастеринг табличных представлений.

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