我有一个基于导航的应用程序:
有一个表格视图,其中包含所有章节的概述。如果用户点击章节,我会在堆栈上推送另一个显示书籍内容的视图控制器。这是一本没有太多文字和图像的小型手册。每个章节都显示在一个单元格中,我知道每章的确切内容.Offset.y。
问题:我无法从点击的章节开始。
在我的ReadingTableView
的初始化方法中,我设置了所需的contentOffset,如下所示:
self.contentOffset = CGPointMake(self.contentOffset.x, targetContentOffsetY);
我也尝试过:
[self setContentOffset:CGPointMake(self.contentOffset.x, targetContentOffsetY) animated:NO];
表格查看JUMPS到所需的偏移量,就好像它的动画效果一样。您可以在几分之一秒内看到一个空白表格视图,然后整个事情很快就会随着动画向上移动。
答案 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。