UITableView 在更新 NSFetchedResultsController 时保持滚动在正确的位置
Posted
技术标签:
【中文标题】UITableView 在更新 NSFetchedResultsController 时保持滚动在正确的位置【英文标题】:UITableView keep the scroll at the correct position while updating NSFetchedResultsController 【发布时间】:2012-07-01 16:48:55 【问题描述】:我正在开发一个主要使用UITableView
的ios 应用程序。
它从服务器检索文章页面。我们有>25000篇文章;所以我实现了一个下拉刷新和无限滚动来遍历标题集合。
下载的那些使用核心数据持久化; NSFetchedResultsController
用于自动更新UITableView
。
但是,我已经实现了双向滚动;上和下。由于允许用户向下滚动 25000 个文章标题,我必须删除用户已经滚动的标题。如果用户向上滚动,我必须在当前标题上方重新插入标题。 这样做,我在文章集合中有一个移动窗口。
我使用部分和标题按日期组显示我的文章。
问题是因为无限滚动是双向的,所以我经常在表格的较高位置删除或添加文章。
事实上,为了实现这一点,我必须更改与NSFetchedResultsController
关联的谓词。
这个结果滚动被搞砸了。我已经让它跳回到它应该是ish的位置。这不好,因为它是一个跳跃(动画:否),如果我把动画打开,它会在回到正确的位置之前绕整个地方。而且这个位置并不完全是它应该的位置。
我不确定我是否很好地解释了我的问题。我认为问题可能出在我使用 UITableView
的方式上,但我不知道应该如何使用它来使它变得更好。
干杯
【问题讨论】:
我也在努力解决这个问题,目前没有任何希望。 听起来你实际上并不需要无限滚动(表格视图支持那么多行),除非你真的需要数据来计算行高。 你如何计算新的偏移量和旧的偏移量?在我看来这是唯一剩下的问题 【参考方案1】:如果你只在 Core Data 中存储文章标题,我认为它可以处理 25.000 个标题。
但是我认为你遇到的问题是表格可见元素的分页
这是一个link,我用来处理您要求的事情。您必须稍作调整才能使用 Core Data 和远程源。
如果可以的话,请发布一些代码,以便我们看看。
【讨论】:
以上是关于UITableView 在更新 NSFetchedResultsController 时保持滚动在正确的位置的主要内容,如果未能解决你的问题,请参考以下文章
在 UICollectionViewCell 中更新 UITableView