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