gpt4 book ai didi

ios - UICollectionView CellForItemAtIndexPath 没有被调用

转载 作者:行者123 更新时间:2023-12-01 19:01:13 26 4
gpt4 key购买 nike

我有两个 UICollectionViews在我的UIViewController .

假设它们是 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
然后在 CellForItemAtIndexPath ,

我使用 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发现在 reloadData之后没有调用该方法.

这是我为 A.collectionViewLayout.collectionViewContentSize; 获得的一些日志记录和 B.collectionViewLayout.collectionViewContentSize;
content size of B = 768.000000, 24.000000
content size of A = 768.000000, 880.000000

当我将默认选定段设置为 B 时,B 正确显示。我切换回 A 也正确显示。但是,当我再次切换回 B 时,它显示一个空的橙色屏幕。知道我的代码出了什么问题吗?

最佳答案

来自 this answer

改变

  [A reloadData]/ [B reloadData] 

到:
  [self.collectionView reloadItemsAtIndexPaths:[self.collectionView indexPathsForVisibleItems]];
[self.collectionView reloadData];

关于ios - UICollectionView CellForItemAtIndexPath 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com