iOS: reload single cell of UICollectionView

scientiffic picture scientiffic · Sep 7, 2014 · Viewed 24.6k times · Source

I am trying to follow the following post on reload a cell in a UICollectionView:

UICollectionView update a single cell

I know that I ultimately want something that looks like this:

[self.collectionView reloadItemsAtIndexPaths:??];

But I don't know how to find and pass the indexPath of a particular cell. Can anyone provide any pointers?

I have an NSMutableArray that contains all the cell information (imageViews that are generated in each cell). Ideally, what I'd like to do is pass the index of the NSMutableArray to refresh the corresponding cell on the page. But I'm not sure how the numerical index gets translated into an indexPath.

Thanks in advance for your help!

Answer

Daniel Galasko picture Daniel Galasko · Sep 7, 2014

It depends on your implementation and how you have grouped your cells into sections but let's assume you have one section and each element in your array corresponds to a row in your table.

If you wanted to reload a cell corresponding to an array element at index x all you need to do is write

[_collectionView performBatchUpdates:^{
    [_collectionView reloadItemsAtIndexPaths:@[[NSIndexPath x inSection:0]]];
} completion:^(BOOL finished) {}];

Conversely, if you have the cell but want to find its index path you can always call [collectionView indexPathForCell:myCell]