Ios 未调用UICollectionView CellForItemAtIndexPath
我的Ios 未调用UICollectionView CellForItemAtIndexPath,ios,uicollectionview,Ios,Uicollectionview,我的UIViewController中有两个uicollectionview 假设它们是A和B,A和B位于nib文件中UIViewcontroller中的同一位置,它们的大小完全相同 现在我开始 A.delegate = self; A.dataSource = self; B.delegate = self; B.dataSource = self; [A registerNib:nib forCellWithReuseIdentifier:CELL_A]; [B registerNib
UIViewController
中有两个uicollectionview
假设它们是A和B,A和B位于nib文件中UIViewcontroller中的同一位置,它们的大小完全相同
现在我开始
A.delegate = self;
A.dataSource = self;
B.delegate = self;
B.dataSource = self;
[A registerNib:nib forCellWithReuseIdentifier:CELL_A];
[B registerNib:nib forCellWithReuseIdentifier:CELL_B];
在ViewDidLoad
然后在单元格中,单击“项目索引路径”
我使用switch语句来显示不同的单元格
然后,我使用段控件控制在所选段上显示正确的UICollectionViewcontroller
段内控制值更改代码。我使用:
- (IBAction)sectionSelected:(id)sender {
if (choosing A) {
B.hidden = YES;
A.hidden = NO;
A.backgroundColor = [UIColor blackColor];
[self getAData];
[A reloadData];
}
else if (choosing B) {
A.hidden = YES;
B.hidden = NO;
B.backgroundColor = [UIColor orangeColor];
[self getBData];
[B reloadData];
}
}
当我将默认选定段设置为A时,A正确显示。但当我切换到B时,我可以看到B已加载,但数据未加载到B,因此除了橙色背景外,我看不到任何内容。我将NSLog放入CellForItemAtIndexPath
中,发现在重新加载数据之后没有调用该方法
下面是我为A.collectionViewLayout.collectionViewContentSize代码>和B.collectionViewLayout.collectionViewContentSize代码>
content size of B = 768.000000, 24.000000
content size of A = 768.000000, 880.000000
当我将默认选定段设置为B时,B将正确显示。我切换回同样正确显示的。然而,当我再次切换回B时,它会显示一个空的橙色屏幕。知道我的代码出了什么问题吗?来自
改变
[A reloadData]/ [B reloadData]
致:
您可能丢失了数组对象中的项的数据,这些数据用于重新加载/创建集合视图单元格。仔细检查数组/数据。您的getAData/getBData是异步调用吗?您可能遇到数据未准备就绪的竞争条件,因此当您调用reloadData时,集合视图创建的单元格数为0。这也解释了内容大小的高度很小。不幸的是,这对我没有帮助。运行时,我在-[UICollectionView\u endItemAnimations]中遇到断言失败。
[self.collectionView reloadItemsAtIndexPaths:[self.collectionView indexPathsForVisibleItems]];
[self.collectionView reloadData];