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