UICollectionView更新单个单元格

时间:2013-11-30 05:30:57

标签: ios objective-c uitableview uicollectionview uicollectionviewcell

我正在尝试更新UICollectionView内的单个单元格,具体而言,我只是尝试更新由cell.imageView引爆的特定单元格中的图像。 [self.collectionView reloadData]实际上不是一个选项,因为它会使整个集合视图闪烁。似乎[self.collectionView beginUpdates] UICollectionView不是[self.collectionView performBatchUpdates:^{ //do something } completion:nil];

我知道我可以使用:

imageView

我不确定要在完成块内放置什么来更新某个单元格的didSelectItemAtIndexPath。这一切都在NSFetchedResultsController内完成。我也没有使用{{1}}。有什么想法吗?

3 个答案:

答案 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。然后,集合视图将要求数据源委托函数提供插入项的视图。