UITableView scrollToRowAtIndexPath的奇怪行为:

时间:2010-07-09 20:34:16

标签: iphone cocoa-touch uitableview viewdidload

我必须将 UITableView 初始滚动位置设置为第一行以外的行(例如,第二部分的第一行)。< / p>

在我的视图控制器的 viewDidLoad 中我写道:

- (void)viewDidLoad
{
    // self.view is a container view, not UITableView
    [super viewDidLoad];
    [table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]
       atScrollPosition:UITableViewScrollPositionTop animated:NO];
}

当屏幕加载时,滚动位置立即设置。否则,当动画参数设置为YES时,立即设置位置而不进行任何动画。 发生了什么事?

为UITableView设置初始行位置的正确方法是什么?

3 个答案:

答案 0 :(得分:0)

只是在黑暗中拍摄,但您是否尝试将此代码放入viewDidAppear {}?

答案 1 :(得分:0)

这不适用于viewDidLoadviewWillAppear,因为当时很可能没有填充表格(至少不是我的情况)

一旦您的表加载并调用它,请尝试将其放入NSTimer中。

顺便说一句,我很快将这段代码(带动画)放入导航栏按钮项目中,并且在表格加载完毕后效果非常好。

答案 2 :(得分:0)

最好的地方应该是ViewDidAppear。此外,您应该在cellWillDisplay中调用scroll方法以确保。请记住在调用scroll方法之前检查indexPath