UITableView reloadSection и reloadRowsAtIndexPaths вызывает странную анимацию

Я делаю ленивую загрузку для своего UITableView, поэтому я пытаюсь перезагрузить отдельные строки по мере обновления изображений. Однако я столкнулся с какой-то странной проблемой.

Когда я звоню,

    [self.bubbleTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationNone];

ИЛИ

    [self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];

Когда я конкретно говорю "Нет анимации", он все еще оживляет, а анимация - это изображение, которое занимает всю ячейку и быстро сокращается до нормального размера. Кроме того, если я изменю его на любую другую анимацию, он будет делать ту же анимацию, независимо от того, какая настройка.

Если я прокомментирую какой-либо из них и просто использую reloadData, он отлично работает, но я бы предпочел не делать reloadData по соображениям производительности для повторного заполнения ячеек, которые не нуждаются в обновлении.

Спасибо!

Ответы

Ответ 1

Вот был ответ

[UIView setAnimationsEnabled:NO];
[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
[UIView setAnimationsEnabled:YES];

Это работает для меня.

UPD. То же, что и блок by @Şafak-gezer

[UIView performWithoutAnimation:^{
    [self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
}];

СВИФТ

UIView.performWithoutAnimation {
            self.bubbleTableView.reloadSections(NSIndexSet(index: indexPath.section), withRowAnimation: UITableViewRowAnimation.None)
        }

Ответ 2

Ниже метод работал у меня: (для iOS 7 и выше)

[UIView performWithoutAnimation:^{
    [tableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone];
}];

Ответ 3

Используйте cellForRowAtIndexPath:, чтобы обновить интересующую вас ячейку.

Ответ 4

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