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?