iOS: reload single cell of UICollectionView

后端 未结 5 1500
無奈伤痛
無奈伤痛 2021-01-11 19:21

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 somethin

相关标签:
5条回答
  • 2021-01-11 19:57
    - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
        NSDictionary *dic = @{@"option":[NSNumber numberWithBool:YES]};
        [self.array insertObject:dic atIndex:indexPath.row];
    
        [collectionView reloadItemsAtIndexPaths:@[indexPath]];
    }
    
    0 讨论(0)
  • 2021-01-11 20:01

    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.. :)

    0 讨论(0)
  • 2021-01-11 20:04

    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)
    }
    
    0 讨论(0)
  • 2021-01-11 20:04

    You can use this way for Swift 5:

    CollectionView.reloadItems(at: IndexPath])
    
    0 讨论(0)
  • 2021-01-11 20:21

    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]

    0 讨论(0)
提交回复
热议问题