2012-05-01 60 views
6

我已经设置了一个表格视图,以便它在视图控制器加载时滚动到某一行。我把这个代码到viewDidLoad方法,它的作品我如何指望它:为什么我的UITableView无法滚动,除非我告诉它动画滚动?

[thisTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:16 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];

不过,如果我更改最后一位animated:NO,它根本不会滚动。我没有动画,但我想知道:如果动画设置为NO,它为什么不滚动?

回答

7

在viewDidLoad中,你的tableView是空的,那么滚动到第16行是不可能的。该呼叫立即评估,因为不需要动画

当您使用动画:YES时,动画会延迟到显示视图时,表格将被填充。

您可能希望在viewDidAppear(或viewWillAppear)中使用这种代码,而不是在您的表中填充数据时。 这将称它每一次视图呈现虽然(除非你添加一些逻辑),不知道如果这符合您的要求...

+0

完美。它正如我想要的那样工作。此外,这有助于了解tableView在viewDidLoad完成之后才会真正加载。谢谢 –

+0

另外,作为一个附注,我强制表通过在表视图上调用reloadData将其数据加载到viewDidLoad中。这使得无动画滚动工作viewDidLoad –

+0

如果这是一个静态表,为什么不,但否则,它不是正确的地方做到这一点。此外,如果您使用viewDidAppear看到显示器故障,则可以使用viewWillAppear代替。 –

相关问题