iOS: reload single cell of UICollectionView

You can use this way for Swift 5.1:

collectionViewOutletName.reloadItems(at: [IndexPath(row: indexNumber, section: sectionNumber)] )

Toy have to pass an array containing the indexPaths that you want to be reloaded.

[self.collectionView reloadItemsAtIndexPaths: indexpathArray];

NSIndexPath has some property names section and row, both represents a cell. If your collection view has single section, you can create a NSIndexPath by setting its section = 0;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowIndex inSection:0];

Here rowIndex is your array index. Btw you have to make an array with you newly created indexpaths, then pass it to reloadItemsAtIndexPaths.

Hope this helps.. :)


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]


Obj-C

NSMutableArray *indexPaths = [[NSMutableArray alloc] init]    
[indexPaths addObject:indexPath];
[self.collectionView reloadItemsAtIndexPaths: indexPaths];

Swift 4.0

var indexPaths = [IndexPath]()
indexPaths.append(indexPath) 

if let collectionView = collectionView {
    collectionView.reloadItemsAtIndexPaths(indexPaths)
}