I have a function that updates existing UICollectionView. The UICollectionView is created, I can see it, but when I want to access its cells to update it, they are nil.
-(void)finishExam{ for (int i = 0; i < [self.questionsOverviewCollection numberOfItemsInSection:0]; i++) { NSLog(@"self.questionsOverviewCollection - %@",self.questionsOverviewCollection); NSLog(@"cell - %@",[self.questionsOverviewCollection cellForItemAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]); NSLog(@"overviewCell - %@",(OverviewCell*)[self.questionsOverviewCollection cellForItemAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]); NSLog(@"numOfCells - %d", [self.questionsOverviewCollection numberOfItemsInSection:0]); OverviewCell *cell = (OverviewCell*)[self.questionsOverviewCollection cellForItemAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; [cell finishExam]; } } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ OverviewCell *cell = (OverviewCell*)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; [cell someSetUp]; return cell; }
Log:
self.questionsOverviewCollection - <UICollectionView: 0xa1abc00; frame = (14 219; 217 441); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0xe0617a0>; layer = <CALayer: 0xe0bbb00>; contentOffset: {0, 0}> collection view layout: <UICollectionViewFlowLayout: 0xe0cc3f0> cell - (null) overviewCell - (null) numOfCells - 30
From the UICollectionView docs (emphasis my own)
Return Value
The cell object at the corresponding index path or nil if the cell is not visible or indexPath is out of range.
You should update your underlying model, which provides the data to the views.
Try this:
[collectionView reloadData]; [collectionView layoutIfNeeded];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With