Есть ли способ отменить анимированный 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
в разгаре анимации?
Ответы
Ответ 1
Похоже, это может быть проблема с делегатом. У вас есть делегат для таблицы, и, если да, то это dealloc'd, когда таблица? Попробуйте отказаться от делегата tableView перед его выпуском.
[ТаблицаView сохраняется в CoreAnimation во время анимации, поэтому, вероятно, это не проблема.]
Ответ 2
Я думаю, что проблема с вами в том, что вы выпускаете массив данных, прежде чем вы отпустите tableView. попробуйте проверить это тоже в dealloc
Ответ 3
Это может произойти, если вы вставили контроллер обновления в представление таблицы в качестве подсмотра (мой намек, никогда не делайте этого)...