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】:由于UITableView
是UIScrollView
的子类,您可以使用UIScrollViewDelegate
的scrollViewWillEndDragging:withVelocity:targetContentOffset:
方法来确定它应该滚动多远,然后在表重新加载调用setContentOffset:animated:
之后使用该目标偏移量(或表视图的开始/结束,如果它变小)来模拟持续滚动
编辑:由于您的targetContentOffset
可能是CGRectZero
,您将不得不使用相同方法的速度以某种方式重新计算它
【讨论】:
我会试试这个并告诉你。 @Borzh 你在这个上成功了吗? 我没有解决这个问题。【参考方案3】:如果我没记错的话,你正在寻找一个函数调用延迟加载。我可以推荐你搜索 SVPullToRefresh here!
【讨论】:
感谢您的提示,但我已经在使用它,我希望表格加载更快以上是关于UITableView如何在重新加载后继续滚动的主要内容,如果未能解决你的问题,请参考以下文章