How would I scroll a UITableView to a specific position with an animation?
Currently I\'m using this code to jump to a position:
//tableController ->
I have two suggestions for you to investigate:
Are you running your app on the simulator or the iPhone itself? I have noticed some animations behave differently in the simulator.
Is it possible you are calling scrollToRowAtIndexPath:atScrollPosition:animated twice in quick succession? This can 'confuse' the animation. You should call this function only once while processing a given event.
It works fine for me:
-(void) viewDidAppear:(BOOL)animated{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0];
[self.tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
}
To be sure that this is called only once, you can make a verification like this:
if(!isInitialized){
isInitialized = YES;
....
}
Try commenting out the reloadData
call. If I'm understanding your question correctly, and you're in viewDidLoad
, you should not need to call it anyway.
Also, if you've just gotten done pushing the view controller, you won't get an animated scroll. You'll have to insert a delay (I've found a quarter second works well) between the time that viewDidLoad
was called and when your animation starts.
I know it's maybe too late, but maybe it is help to others,
now you can scroll a table just with [tableView scrollsToTop]
.