Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to cancel an animated UITableView/UIScrollView setContentOffset:animated:?

My app is crashing when my UITableView is released whilst animating. The app functions without issue so long as the animation completes. Below is the result of a tap on the UIButton which calls [tableView setContentOffset:offset animated:YES]; and then a lightning quick tap on the backBarButtonItem which pops the 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:]
...

I've never seen a crash on _scrollViewAnimationEnded and apparently neither has Google. I have tried calling [tableView setContentOffset:offset animated:NO]; from the UITableViewController's - (void)viewWillDisappear:(BOOL)animated method, but this did not solve the issue.

Any ideas for stopping a UITableView or UIScrollView in the midst of animating?

like image 223
Metric Scantlings Avatar asked Dec 14 '09 02:12

Metric Scantlings


2 Answers

This looks like it might be a delegate issue. Do you have a delegate for the table, and, if so, is it dealloc'd when the table is? Try nil'ing out your tableView's delegate before releasing it.

[The tableView is retained by CoreAnimation while it's animating, so that's probably not the problem.]

like image 88
Ben Gottlieb Avatar answered Oct 06 '22 01:10

Ben Gottlieb


I think the problem with you is that you are releasing the datasource array, before you release the tableView. try checking this out too in the dealloc

like image 25
Madhup Singh Yadav Avatar answered Oct 06 '22 01:10

Madhup Singh Yadav