[英]UICollectionView update a single cell
我正在尝试更新UICollectionView
的单个单元格,特别是我只是尝试更新由cell.imageView
引爆的特定单元格中的图像。 [self.collectionView reloadData]
实际上不是一个选项,因为它使整个集合视图闪烁。 [self.collectionView beginUpdates]
是不是在事UICollectionView
看来。
我知道我可以使用:
[self.collectionView performBatchUpdates:^{
//do something
} completion:nil];
我不确定在完成块中放置什么来更新某个单元格的imageView
。 这都是在didSelectItemAtIndexPath
中完成的。我也没有使用NSFetchedResultsController
。 有任何想法吗?
- (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths
这是一个在collectionView
重新加载特定indexPaths
的方法
Dinesh的回答是现实的。 但是为了避免在重新加载(也称为“闪烁”)时出现不需要的动画,请使用:
BOOL animationsEnabled = [UIView areAnimationsEnabled];
[UIView setAnimationsEnabled:NO];
[myCollectionView reloadItemsAtIndexPaths:myIndexPaths];
[UIView setAnimationsEnabled:animationsEnabled];
请参阅“适用于iOS的集合视图编程指南”中的插入,删除和移动节和项目 :
要插入,删除或移动单个部分或项目,您必须执行以下步骤:
更新数据源对象中的数据。 调用集合视图的相应方法以插入或删除节或项。 在通知集合视图任何更改之前更新数据源至关重要。 集合视图方法假定您的数据源包含当前正确的数据。 如果没有,集合视图可能会从您的数据源收到错误的项目集,或者询问不存在的项目并使您的应用程序崩溃。
因此,在您的情况下,您必须首先将图像添加到集合视图数据源,然后调用insertItemsAtIndexPaths。 然后,集合视图将要求数据源委托函数提供插入项的视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.