如何获取UITableView滚动位置以便保存?

pro*_*rmr 71 iphone objective-c uitableview uiscrollview

有没有办法找出哪个UITableViewCell位于滚动窗口的顶部?

我想获取当前滚动位置,以便我可以在应用程序退出时保存它.当应用程序启动时,我想滚动到它上次退出时的位置.

Ben*_*ieb 158

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

tableView.contentOffset.y;
Run Code Online (Sandbox Code Playgroud)

  • 如果使用偏移量,则不需要单元格; 只需在重新进入视图时设置偏移量.但是,如果你必须知道顶部的单元格,只需使用:[tableView indexPathForRowAtPoint:CGPointMake(0,0)]; (15认同)
  • 经过近5年的努力仍在继续. (5认同)

Hei*_*sch 6

只有知道所有表视图项的大小时,才能使用已接受的解决方案.自动调整大小/估计大小并非总是如此.

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

您可以使用以下命令获取第一个可见项indexPath:

savedIndex = tableView.indexPathsForVisibleRows?.first
Run Code Online (Sandbox Code Playgroud)

然后滚动到它:

tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
Run Code Online (Sandbox Code Playgroud)