将新数据插入核心数据存储时如何使 UICollectionView 始终位于底部
Posted
技术标签:
【中文标题】将新数据插入核心数据存储时如何使 UICollectionView 始终位于底部【英文标题】:How to keep UICollectionView always at the bottom while new data is inserted into core data store 【发布时间】:2014-12-04 06:25:57 【问题描述】:我有一个使用 NSFetchedResultsController 的 UICollectionView,我希望视图始终在底部滚动,因为新条目被插入到持久存储中。我该怎么做?我已经实现了 NSFetchedResultsController 委托方法,并且查看集合中的数据效果很好,但我不确定如何实现这个额外的要求。有什么建议吗?
【问题讨论】:
【参考方案1】:试试
-(void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;
这将达到您的目的。
【讨论】:
【参考方案2】:你实际上需要做三件事:
-
确保获取的结果控制器按创建日期升序排序。
(您可能需要一个属性。)
在委托方法中,将新对象插入到正确的索引路径。
如有必要,滚动到该项目使其可见。
【讨论】:
【参考方案3】:- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
[yourCollectionView reloadData];
CGRect lastCell = CGRectMake(0, CGFLOAT_MAX, 50, 50);
[yourCollectionView scrollRectToVisible:lastCell animated:YES];
//Or
/*
NSIndexPath *lastRow = [NSIndexPath indexPathForItem:yourItem inSection:yourSection];
[collectionView scrollToItemAtIndexPath:lastRow
atScrollPosition:UICollectionViewScrollPositionBottom
animated:NO];
*/
【讨论】:
以上是关于将新数据插入核心数据存储时如何使 UICollectionView 始终位于底部的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Kafka 接收器连接器在接收器启动时将数据从主题插入到表中