Обновите UITableViewCell без перезагрузки - PullRequest
3 голосов
/ 07 апреля 2011

Итак, вот моя ситуация:

У меня есть UITableView, где в каждой ячейке есть несколько кнопок.В cellForRowAtIndexPath я устанавливаю путь индекса строки, чтобы при нажатии кнопки я знал, какая строка была нажата.Одной из кнопок является кнопка удаления, и при нажатии я удаляю данные основы и удаляю строку из таблицы.

Проблема, с которой я столкнулся, заключается в том, что после удаления строки indexPath других строк становятся неправильными, поскольку другие строки не перерисовываются.Единственный способ, которым я могу найти, чтобы перерисовать таблицу, это вызвать reload, но это портит анимацию.Я полагаю, что проблема такого рода должна быть решена раньше.У кого-нибудь есть предложения как обойти это?Я в порядке с изменением способа, которым я разработал мои кнопки, чтобы работать, если есть лучший способ.

Ответы [ 4 ]

9 голосов
/ 07 апреля 2011

Думаю, вам нужно использовать это ...

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Справочник Apple!

3 голосов
/ 24 мая 2016

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

[tableView beginUpdates];
[tableView endUpdates];
2 голосов
/ 07 апреля 2011

вызов метода: - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

1 голос
/ 16 января 2016

Лучше не хранить indexPath с помощью кнопок.В обработчике действий кнопки (который является либо методом в вашем подклассе ячейки, либо в вашем viewController) вы можете идентифицировать ячейку и впоследствии определить indexPath, используя -indexPathForCell:.

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