Есть ли способ отменить анимированный UITableView/UIScrollView setContentOffset: анимированный:? - программирование
Подтвердить что ты не робот

Есть ли способ отменить анимированный UITableView/UIScrollView setContentOffset: анимированный:?

Мое приложение разбивается, когда мой UITableView выпущен во время анимации. Приложение работает без проблем, пока анимация завершается. Ниже показан результат нажатия на UIButton, который вызывает [tableView setContentOffset:offset animated:YES];, а затем кратковременно нажмите на значок backBarButtonItem, который выталкивает UITableViewController:

#0  0x31ec3ebc in objc_msgSend
#1  0x33690248 in -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded]
#2  0x30defa14 in -[NSObject performSelector:withObject:]
#3  0x33690098 in -[UIAnimator stopAnimation:]
#4  0x3368fb7c in -[UIAnimator(Static) _advance:]
...

Я никогда не видел крушения на _scrollViewAnimationEnded и, видимо, у Google нет. Я попытался вызвать [tableView setContentOffset:offset animated:NO]; из метода UITableViewController - (void)viewWillDisappear:(BOOL)animated, но это не решило проблему.

Любые идеи для остановки UITableView или UIScrollView в разгаре анимации?

4b9b3361

Ответ 1

Похоже, это может быть проблема с делегатом. У вас есть делегат для таблицы, и, если да, то это dealloc'd, когда таблица? Попробуйте отказаться от делегата tableView перед его выпуском.

[ТаблицаView сохраняется в CoreAnimation во время анимации, поэтому, вероятно, это не проблема.]

Ответ 2

Я думаю, что проблема с вами в том, что вы выпускаете массив данных, прежде чем вы отпустите tableView. попробуйте проверить это тоже в dealloc

Ответ 3

Это может произойти, если вы вставили контроллер обновления в представление таблицы в качестве подсмотра (мой намек, никогда не делайте этого)...