UITableView 在插入更多行时滚动到顶部
Posted
技术标签:
【中文标题】UITableView 在插入更多行时滚动到顶部【英文标题】:UITableView scrolls to top when inserting more rows 【发布时间】:2016-01-23 03:26:52 【问题描述】:在我的代码中,我覆盖了tableView:willDisplayCell
,当显示最后一行时,我开始加载更多数据。当这些数据进来时,我调用insertRowsAtIndexPaths
来添加行。
这通常有效(tableview 的滚动位置不会改变),但我注意到如果我过度滚动而不松手(滚动超过 tableview 的末尾),当@987654323 时 tableview 将跳到顶部@ 在数据加载时被调用。
我将UITableViewAutomaticDimension
/Autolayout 用于我的单元格高度,因为每个单元格具有不同的高度,具体取决于它们包含的数据。我怎样才能避免这个问题?理想情况下,如果数据加载并且 tableview 过度滚动,一旦数据进入,滚动位置将保持在过度滚动。
【问题讨论】:
我从 UITableViewAutomaticDimension 切换到使用虚拟单元计算每行高度,并且不再出现此问题。仍然想知道是否可以解决 UITableViewAutomaticDimension 的问题。 【参考方案1】:您可以在底部单元格indexpath
上创建一个引用,然后在导致它返回顶部的任何函数中调用
[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionNone animated:YES];
SWIFT 3
self.tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.none, animated: true)
【讨论】:
如果用户滚动到行的中间,这不会导致表格视图对齐到行的开头吗? 我以为只有当用户一直滚动到底部时才会发生这种情况? 如果是这样,当新行加载时,表格视图仍然会捕捉到上一个最后一行,对吗?我试图获得的行为是表格视图停留在过度滚动位置,因为新数据加载到以前是过度滚动区域的空间中。作为参考,打开 Facebook 应用程序并滚动到提要的底部;如果你过度滚动表格视图将保持在帖子加载时的位置。 哦,好吧,我明白你的意思了。也许您可以在 tableView 加载时暂停 UI 线程,并在新数据准备好显示后取消暂停...以上是关于UITableView 在插入更多行时滚动到顶部的主要内容,如果未能解决你的问题,请参考以下文章
当 UIView 的 needsUpdateConstraints 被调用时,UITableview 滚动到顶部[关闭]