将新数据插入核心数据存储时如何使 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 接收器连接器在接收器启动时将数据从主题插入到表中

将新对象插入数据库时​​出现Swift dynamicCast错误

将新对象插入存储库会引发错误

iPhone - 核心数据问题?

比较并根据月份将新数据插入表中

如何避免插入重复记录?