2010-05-08 50 views

回答

146

您可以通过查看其contentOffset属性轻松获取表视图的精确偏移量。对于垂直滚动,请看:

tableView.contentOffset.y; 
+1

这是一个在滚动视图中的CGPoint,我不知道我怎么能告诉哪个UITableViewCell对应。 – progrmr 2010-05-08 23:32:48

+15

如果使用偏移量,则不需要单元格;只需在重新进入视图时设置偏移量即可。但是,如果您必须知道顶部的单元格,请使用:[tableView indexPathForRowAtPoint:CGPointMake(0,0)];使用contentOffset的 – 2010-05-09 01:46:09

+0

完美地工作,它返回滚动位置的确切位置,当应用程序上次退出。谢谢!毕竟,我不需要知道它是哪个单元格。 – progrmr 2010-05-09 21:22:06

2

如果您知道所有表格视图项目的大小,则接受的解决方案才有效。随着自动调整大小/估计大小并不总是如此。

一种替代方法是保存第一个可见项并滚动到它。

你可以第一个可见项目indexPath有:

savedIndex = tableView.indexPathsForVisibleRows?.first 

然后滚动到它这样做:

tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false) 
1

确保您可以在viewWillAppear中加载和不是viewDidLoad中(测试的iOS 9) 。 ViewWillAppear是当视图完成布局时 - 结果存在差异。

-(void) viewWillAppear:(BOOL)animated { 
    NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults]; 
    [self.tableView setContentOffset:CGPointMake(0, [lightData floatForKey:@"yValue"])]; 
} 

-(void) viewWillDisappear:(BOOL)animated { 
    NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults]; 
    [lightData setFloat:self.tableView.contentOffset.y forKey:@"yValue"]; 
    [lightData synchronize]; 
}