我正在尝试更新UICollectionView
内的单个单元格,具体而言,我只是尝试更新由cell.imageView
引爆的特定单元格中的图像。 [self.collectionView reloadData]
实际上不是一个选项,因为它会使整个集合视图闪烁。似乎[self.collectionView beginUpdates]
UICollectionView
不是[self.collectionView performBatchUpdates:^{
//do something
} completion:nil];
。
我知道我可以使用:
imageView
我不确定要在完成块内放置什么来更新某个单元格的didSelectItemAtIndexPath
。这一切都在NSFetchedResultsController
内完成。我也没有使用{{1}}。有什么想法吗?
答案 0 :(得分:75)
- (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths
这是一种在indexPaths
collectionView
的方法
答案 1 :(得分:40)
Dinesh的回答是正确的。但是为了避免在重新加载(也就是“闪烁”)时出现不需要的动画,请使用:
BOOL animationsEnabled = [UIView areAnimationsEnabled];
[UIView setAnimationsEnabled:NO];
[myCollectionView reloadItemsAtIndexPaths:myIndexPaths];
[UIView setAnimationsEnabled:animationsEnabled];
答案 2 :(得分:4)
请参阅“适用于iOS的集合视图编程指南”中的Inserting, Deleting, and Moving Sections and Items:
要插入,删除或移动单个部分或项目,您必须执行以下步骤:
更新数据源对象中的数据。 调用集合视图的相应方法以插入或删除节或项。 在通知集合视图任何更改之前更新数据源至关重要。集合视图方法假定您的数据源包含当前正确的数据。如果没有,集合视图可能会从您的数据源收到错误的项目集,或者询问不存在的项目并使您的应用程序崩溃。
因此,在您的情况下,您必须首先将图像添加到集合视图数据源,然后调用insertItemsAtIndexPaths。然后,集合视图将要求数据源委托函数提供插入项的视图。