【发布时间】:2015-02-19 10:15:29
【问题描述】:
我将UICollectionView 与NSFetchedResultsController 结合使用。当我获取新数据时,我将它们放入 SQLite 数据库中,并且我的 frc 会收到一条通知,它将更新。我实现了适当的委托方法并在批量更新中插入新数据,之后我不调用reloadData。但是一旦插入数据,collectionview 就会滚动到顶部(以使新项目可见?)。我想干预这个过程并模仿 Facebook/9Gag 的实现。当有新数据时,一个按钮会淡出,让用户滚动到顶部。在显示按钮时,新项目已经插入,因此用户也可以自己向上滚动。我尝试了以下方法:
- 连接到
UIScrollViewDelegate方法以查看是否可以阻止collectionView 滚动(在此更新过程中不会调用任何方法) - 在 frc
willUpdate时显示“滚动显示更多”按钮,并在按下按钮时插入项目。问题是用户不能自己向上滚动 - 在插入项目之前,我会在插入后计算当前可见项目的 indexPath(添加插入项目的数量),并在批量更新的完成块中滚动到该索引而不使用动画。这仅在我延迟滚动时才有效,但随后它会闪烁,因为它首先向上滚动一点
【问题讨论】:
-
你可以使用这个answer。它基于 UICollectionViewLayout。
标签: ios swift uiscrollview uicollectionview nsfetchedresultscontroller