UITableView reloadRowsAtIndexPaths выполняет анимацию, когда она не должна - PullRequest
8 голосов
/ 30 декабря 2010

Я использую UITableView в своем приложении для iOS и недавно обнаружил странную проблему.

Предположим, моя таблица структурирована следующим образом:

section 1 header
row 
section 2 header
section 3 header
row
row 
...

(обратите внимание, что в разделе 2 нет строк)

Я выполняю обновления строк в моей таблице с помощью

    [self.tv beginUpdates];
    [self.tv reloadRowsAtIndexPaths:ip withRowAnimation:UITableViewRowAnimationNone];
    [self.tv endUpdates];

Я не хочу, чтобы анимация происходила. Я просто хочу обновить строку. Проблема заключается в том, что эта стратегия работает для каждой строки и раздела в моей таблице , за исключением раздела 3, строки 1: первой строки последнего раздела. Когда я обновляю эту строку (которая действительно использует правильные indexPaths), вместо того, чтобы не получать анимацию, строка выполняет этот маленький прыжок, как будто она скользит в новой строке, чтобы заменить старую или что-то еще. Строка слегка сдвигается вверх, а затем возвращается назад, как будто я вставляю строку. Я предполагаю, что это как-то связано с вычислениями заголовка, но я возвращаю правильные значения для heightForHeaderInSection.

Кто-нибудь видел такое поведение?

Ответы [ 2 ]

0 голосов
/ 20 марта 2014

У меня была такая же проблема.Решением было выбрать ячейку из таблицы, используя:

UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]

, а затем обновить ее вручную, используя метод пользовательской настройки или просто вызвав:

[cell setNeedsLayout]

Для получения дополнительной информации см .:

UITableView reloadRowsAtIndexPaths графический глюк

0 голосов
/ 30 декабря 2010

Интересно, нужны ли beginUpdates и endUpdates в этом сценарии только перезагрузки.

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