【发布时间】:2014-04-02 02:57:38
【问题描述】:
我的UIViewController 中有两个UICollectionViews。
假设它们是 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 时,它显示一个空的橙色屏幕。知道我的代码出了什么问题吗?
【问题讨论】:
标签: ios uicollectionview