I have a simple UICollectionView. The first time the view is loaded, cellForItemAtIndexPath is called three times and I see three cells.
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section {
NSUInteger count = ([self.results count] > 0 ? [self.results count] : 3);
NSLog(@"count %lu", (unsigned long)count);
return count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellForItemAtIndexPath called");
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"TasteCell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor whiteColor];
return cell;
}
However, later self.results becomes an array of 5 elements and I call:
[self.collectionView reloadData];
When this happens, numberOfItemsInSection is called again and the "count" log statement there shows that it returns 5. However, this time, cellForItemAtIndexPath is never called, and the UI still shows the three cells from the first load.
Why is the number of cells not being updated even though the count has changed?
I think, may be you are using the concept of static collection view cell. If its static, change it to dynamic in your xib/Storyboard.
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