UICollectionView更新单个单元格

我正在尝试更新UICollectionView的单个单元格,具体UICollectionView ,我只是试图更新由cell.imageView引爆的特定单元格中的图像。 [self.collectionView reloadData]不是一个真正的select,因为它使整个集合视图闪光。 [self.collectionView beginUpdates]不是[self.collectionView beginUpdates]的东西。

我知道我可以使用:

 [self.collectionView performBatchUpdates:^{ //do something } completion:nil]; 

我不完全确定要在完成块中放置什么来更新某个单元格的imageView 。 这一切都是在didSelectItemAtIndexPath内部完成的。我也没有使用NSFetchedResultsController 。 有任何想法吗?

- (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths

这里是一个重新加载你的collectionView的特定indexPaths的方法

Dinesh的回答是现货。 但为了避免在重新加载时出现不必要的animation(又名“闪烁”),请使用:

 BOOL animationsEnabled = [UIView areAnimationsEnabled]; [UIView setAnimationsEnabled:NO]; [myCollectionView reloadItemsAtIndexPaths:myIndexPaths]; [UIView setAnimationsEnabled:animationsEnabled]; 

请参阅“适用于iOS的集合视图编程指南”中的插入,删除和移动节和项目 :

要插入,删除或移动单个部分或项目,您必须执行以下步骤:


更新数据源对象中的数据。 调用收集视图的相应方法来插入或删除节或项目。 在通知任何更改的集合视图之前,更新数据源至关重要。 集合视图方法假定您的数据源包含当前正确的数据。 如果没有,收集视图可能会从您的数据源收到错误的一组项目,或者要求那些不在那里的项目,并使您的应用程序崩溃。


所以在你的情况下,你必须首先添加一个图像集合视图数据源,然后调用insertItemsAtIndexPaths。 然后,集合视图将要求数据源委托函数为插入的项目提供视图。