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];