有没有办法找出哪个UITableViewCell
位于滚动窗口的顶部?
我想获取当前滚动位置,以便我可以在应用退出时保存它。当应用程序启动时,我想滚动到它上次退出时的位置。
答案 0 :(得分:157)
您可以通过查看其contentOffset
属性轻松获取表格视图的确切偏移量。对于垂直滚动,请查看:
tableView.contentOffset.y;
答案 1 :(得分:6)
只有知道所有表视图项的大小时,才能使用已接受的解决方案。自动调整大小/估计大小并非总是如此。
另一种方法是保存第一个可见项并滚动到它。
您可以使用以下命令获取第一个可见项indexPath:
savedIndex = tableView.indexPathsForVisibleRows?.first
然后通过执行以下操作滚动到它:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
答案 2 :(得分: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];
}