我怎样才能获得UITableView的滚动位置,所以我可以保存它?
有什么办法找出哪个UITableViewCell
是在滚动窗口的顶部?
我想获取当前的滚动位置,以便在应用程序退出时保存它。 当应用程序开始时,我想滚动到上次退出时的位置。
您可以通过查看其contentOffset
属性轻松获取表视图的确切偏移量。 对于垂直滚动,请看:
tableView.contentOffset.y;
只有当您知道所有表格视图项目的大小时,接受的解决scheme才有效。 随着自动resize/估计大小并不总是如此。
一种替代方法是保存第一个可见的项目并滚动到它。
你可以得到第一个可见的项目indexPath:
savedIndex = tableView.indexPathsForVisibleRows?.first
然后通过执行以下操作滚动到:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
确保你可以加载viewWillAppear而不是viewDidLoad(经testing的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]; }