有什么方法可以找出哪个UITableViewCell
位于滚动窗口的顶部?如何获得UITableView滚动位置,以便保存它?
我想获取当前的滚动位置,以便在应用程序退出时保存它。当应用程序开始使用时,我想滚动到上次退出时的位置。
有什么方法可以找出哪个UITableViewCell
位于滚动窗口的顶部?如何获得UITableView滚动位置,以便保存它?
我想获取当前的滚动位置,以便在应用程序退出时保存它。当应用程序开始使用时,我想滚动到上次退出时的位置。
您可以通过查看其contentOffset
属性轻松获取表视图的精确偏移量。对于垂直滚动,请看:
tableView.contentOffset.y;
如果您知道所有表格视图项目的大小,则接受的解决方案才有效。随着自动调整大小/估计大小并不总是如此。
一种替代方法是保存第一个可见项并滚动到它。
你可以第一个可见项目indexPath有:
savedIndex = tableView.indexPathsForVisibleRows?.first
然后滚动到它这样做:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
确保您可以在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];
}
这是一个在滚动视图中的CGPoint,我不知道我怎么能告诉哪个UITableViewCell对应。 – progrmr 2010-05-08 23:32:48
如果使用偏移量,则不需要单元格;只需在重新进入视图时设置偏移量即可。但是,如果您必须知道顶部的单元格,请使用:[tableView indexPathForRowAtPoint:CGPointMake(0,0)];使用contentOffset的 – 2010-05-09 01:46:09
完美地工作,它返回滚动位置的确切位置,当应用程序上次退出。谢谢!毕竟,我不需要知道它是哪个单元格。 – progrmr 2010-05-09 21:22:06