是否有建议的方法让UITableView开始在特定位置显示?

时间:2011-08-17 16:04:12

标签: iphone ios ipad uitableview uiscrollview

我有一个基于导航的应用程序:

有一个表格视图,其中包含所有章节的概述。如果用户点击章节,我会在堆栈上推送另一个显示书籍内容的视图控制器。这是一本没有太多文字和图像的小型手册。每个章节都显示在一个单元格中,我知道每章的确切内容.Offset.y。

问题:我无法从点击的章节开始。

在我的ReadingTableView的初始化方法中,我设置了所需的contentOffset,如下所示:

self.contentOffset = CGPointMake(self.contentOffset.x, targetContentOffsetY);

我也尝试过:

[self setContentOffset:CGPointMake(self.contentOffset.x, targetContentOffsetY) animated:NO];

表格查看JUMPS到所需的偏移量,就好像它的动画效果一样。您可以在几分之一秒内看到一个空白表格视图,然后整个事情很快就会随着动画向上移动。

3 个答案:

答案 0 :(得分:3)

将contentOffset设置为包含viewWillAppear的{​​{1}}。 UIViewController也很有用,如果您尝试偏移到特定行而不是像素数。再次,在[UITableView scrollToRowAtIndexPath:中或在tableView加载数据后的任何时间点火scrollToRowAtIndexPath

答案 1 :(得分:3)

您已经提到过在初始化方法中设置contentOffset,因为UITableView实际上并未在您的init方法中加载,因此内容大小也未设置。这就是为什么动画没有效果。

如果您使用的是UIViewController或UITableViewController,请尝试“viewDidAppear:”中的“setContentOffset:animated:”方法(小心执行字,而不是)方法

此外,“scrollToRowAtIndexPath:atScrollPosition:animated:”更适合滚动UITableView。

P.S。:动画也可能看起来像JUMP如果您的表格单元格加载非常慢,如果您不确定问题出在哪里,您可以暂时使用空单元格进行测试。

答案 2 :(得分:0)

为什么不:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

为其指定特定单元格的indexPath。