UITableView 在更新 NSFetchedResultsController 时保持滚动在正确的位置

Posted

技术标签:

【中文标题】UITableView 在更新 NSFetchedResultsController 时保持滚动在正确的位置【英文标题】:UITableView keep the scroll at the correct position while updating NSFetchedResultsController 【发布时间】:2012-07-01 16:48:55 【问题描述】:

我正在开发一个主要使用UITableViewios 应用程序。 它从服务器检索文章页面。我们有>25000篇文章;所以我实现了一个下拉刷新和无限滚动来遍历标题集合。 下载的那些使用核心数据持久化; NSFetchedResultsController 用于自动更新UITableView

但是,我已经实现了双向滚动;上和下。由于允许用户向下滚动 25000 个文章标题,我必须删除用户已经滚动的标题。如果用户向上滚动,我必须在当前标题上方重新插入标题。 这样做,我在文章集合中有一个移动窗口。

我使用部分和标题按日期组显示我的文章。

问题是因为无限滚动是双向的,所以我经常在表格的较高位置删除或添加文章。 事实上,为了实现这一点,我必须更改与NSFetchedResultsController 关联的谓词。

这个结果滚动被搞砸了。我已经让它跳回到它应该是ish的位置。这不好,因为它是一个跳跃(动画:否),如果我把动画打开,它会在回到正确的位置之前绕整个地方。而且这个位置并不完全是它应该的位置。

我不确定我是否很好地解释了我的问题。我认为问题可能出在我使用 UITableView 的方式上,但我不知道应该如何使用它来使它变得更好。

干杯

【问题讨论】:

我也在努力解决这个问题,目前没有任何希望。 听起来你实际上并不需要无限滚动(表格视图支持那么多行),除非你真的需要数据来计算行高。 你如何计算新的偏移量和旧的偏移量?在我看来这是唯一剩下的问题 【参考方案1】:

如果你只在 Core Data 中存储文章标题,我认为它可以处理 25.000 个标题。

但是我认为你遇到的问题是表格可见元素的分页

这是一个link,我用来处理您要求的事情。您必须稍作调整才能使用 Core Data 和远程源。

如果可以的话,请发布一些代码,以便我们看看。

【讨论】:

以上是关于UITableView 在更新 NSFetchedResultsController 时保持滚动在正确的位置的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 仅在向上滚动时更新,而不是向下滚动

在 UICollectionViewCell 中更新 UITableView

如何在滚动时更新 UITableView 数据

在 UITableView 中选择行时变量不更新

更新 UITableView 内的 UIView 帧大小 - swift

加载视图后如何在运行时更新 UITableView