如何在显示下一个 UIViewController 之前获取 UITableView 的最后一个滚动位置?

How to get UITableView last scroll position before show next UIViewController?

我有一个关于 UITableView 的问题。

因为我想在显示下一个 UIViewController 之前保存 UITableView 在我的 userdefault 中的最后一个位置 UIViewController

当我回到主页时,我可以读取用户默认值以自动滚动到我的保存位置。

为什么我会问这个问题,因为当我回到主页时我会刷新我的 viewcontroller 并且布局会改变,所以我无法在显示之前准确定位。

对我有什么想法吗? 谢谢

您可以使用 indexPathsForVisibleRows 获取第一个可见单元格的索引路径并存储它。然后,当您再次显示 table 时,您可以使用 scrollToRowAtIndexPath:atScrollPosition:animated: 来确保该单元格可见。

通过使用 contentOffset.

离开时保存:

float savedVerticalContentOffset = tableView.contentOffset.y;

然后当你 return 刷新时调用:

[tableView setContentOffset:CGPointMake(0, savedVerticalContentOffset)];