UITableView如何在重新加载后继续滚动

Posted

技术标签:

【中文标题】UITableView如何在重新加载后继续滚动【英文标题】:UITableView how to continue scrolling after reload 【发布时间】:2015-11-24 12:22:51 【问题描述】:

我的应用程序中有一个 UITableView。当表格几乎滚动到最后时,我下载更多数据并重新加载表格。

如果 tableView 正在滚动,则在我调用 [tableView reloadData]; 时滚动停止。如何在reloadData的同时实现不停止滚动的效果?我想我需要以某种方式保存滚动速度然后恢复它,但是该怎么做呢?

P.D.我真的在提问之前搜索了这个问题。

【问题讨论】:

您的代码使用哪种语言?提示:不要在您的问题中添加不相关的标签。这让寻找类似问题答案的人变得更加困难。编辑:我看到你给出了一个 Objective-C 的例子。我会同意的。 我认为这是不可能的。不幸的是。 当我创建这个问题时,我将objective-c / swift都添加到标签中。我真的不在乎,我可以使用它们中的任何一个。 您是否尝试使用 insertRowsAtIndexPaths 添加行而不是重新加载整个 tableview? 其实我没有,我会努力告诉你的,谢谢你的建议。 【参考方案1】:

我的意思是,this method (insertRowsAtIndexPaths:withRowAnimation:) 是关键。

在 SO:the use case 和 the tip 上有一个用例和一个不错的提示。

【讨论】:

【参考方案2】:

由于UITableViewUIScrollView 的子类,您可以使用UIScrollViewDelegatescrollViewWillEndDragging:withVelocity:targetContentOffset: 方法来确定它应该滚动多远,然后在表重新加载调用setContentOffset:animated: 之后使用该目标偏移量(或表视图的开始/结束,如果它变小)来模拟持续滚动 编辑:由于您的targetContentOffset 可能是CGRectZero,您将不得不使用相同方法的速度以某种方式重新计算它

【讨论】:

我会试试这个并告诉你。 @Borzh 你在这个上成功了吗? 我没有解决这个问题。【参考方案3】:

如果我没记错的话,你正在寻找一个函数调用延迟加载。我可以推荐你搜索 SVPullToRefresh here!

【讨论】:

感谢您的提示,但我已经在使用它,我希望表格加载更快

以上是关于UITableView如何在重新加载后继续滚动的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在使用 Swift 中的 Master Detail App 滚动之前不会重新加载

UITableView 防止滚动时重新加载

覆盖不滚动 UITableView - iOS

UITableview 在重新加载时滚动到顶部太高?

如何在我查看 UITableView 时重新加载它

UITableView 在滚动或重新加载 tableviewcell 之前不显示远程图像