【问题标题】:How to get UITableView last scroll position before show next UIViewController?如何在显示下一个 UIViewController 之前获取 UITableView 的最后滚动位置?
【发布时间】:2026-01-08 17:25:03
【问题描述】:

我有一个关于 UITableView 的问题。

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

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

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

你有什么想法吗? 谢谢

【问题讨论】:

  • 默认情况下不就是这样吗?
  • 使用tableView.contentOffset
  • @RakeshaShastri 因为当我回到主页时,我会刷新我的视图控制器并且布局会改变,所以在显示之前我无法准确定位。
  • @Kamran 有例子吗?谢谢。
  • @JimmyLee 查找 UITableViewUIScrollView 文档。

标签: swift uitableview uiscrollview uiscrollviewdelegate


【解决方案1】:

通过使用contentOffset

离开时保存:

float savedVerticalContentOffset = tableView.contentOffset.y;

然后当您返回并刷新时,只需调用:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      最近更新 更多