我collectionView
在同一个视图中有几个 s,并决定让同一个对象处理数据源职责。collectionView:numberOfItemsInSection:
当我想要显示的项目数量在它们之间不同时,我遇到了方法问题(除了使用虚拟单返回语句进行测试时,这种情况一直存在)。将来,数字将被动态提取,但只是为了调试,我插入了静态值。
该方法几乎是:
if (cv == self.articlesView) {
return 4;
} else if (cv == self.journalsView) {
return 4;
} else if (cv == self.algorithmsView) {
return 6;
}
return 10; // this never actually runs
此时以非常基本的方式创建单元格(我刚刚开始使用此应用程序):
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
cell.backgroundColor = [UIColor grayColor];
return cell;
}
我为我的每个 collectionViews 运行以下内容viewDidLoad
:
[cv registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:CellIdentifier];
我得到的错误是EXC_BAD_ACCESS
它附加到[self.window makeKeyAndVisible];
应用程序委托中的行。
如果我将最后一个项目的数量collectionView
从 6 更改为 3(基本上,使其比其他所有项目都小),应用程序会运行,但现在所有 collectionView 的项目数量都较少,而不仅仅是最后一个(看起来像iOS第一次运行collectionView:numberOfItemsInSection:
它为最后一个collectionView执行它)。
所以看起来方法第一次运行时,结果以某种方式坚持并应用于所有其他方法,然后出现越界错误。然而,我无法弄清楚如何修复或发现我的极少代码有任何问题。