我有一個簡單的UICollectionView。第一次加載視圖時,cellForItemAtIndexPath被調用三次,我看到三個單元格。UICollectionView:重裝數據調用numberOfItemsInSection但不cellForItemAtIndexPath
- (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;
}
不過,後來self.results變成5個元素的數組,我呼籲:
[self.collectionView reloadData];
發生這種情況時,numberOfItemsInSection又被稱爲與「計數」日誌語句存在表明,它返回5.然而,這一次,cellForItemAtIndexPath不會被調用,而UI仍然顯示從第一負載三個單元。
即使計數已更改,爲什麼單元格數量未更新?
也許這個答案可能有所幫助:http://stackoverflow.com/a/19100840/2274694 – 2014-12-07 04:20:47
UICollectionView&UITableView只更新視圖中的可見單元格。 – NANNAV 2014-12-07 05:13:09
如果我嘗試一下Lyndsey提示它抱怨說我更改了計數而沒有插入和刪除項目:'NSInternalInconsistencyException',原因:'無效更新:部分0中的項目數目無效。更新(5)必須更新(3)之前等於包含在該部分的項目數,加或減插入或從該部分(0插入時,0刪除)和加上或刪除的項目的數量減去的數物品移入或移出該部分(0移入,0移出)。' – theraju 2014-12-07 05:41:35