我有两个集合视图作为属性的自定义视图的属性。我们称之为self.collViewA
和self.collViewB
。在实现数据源方法时,我使用if语句来配置具有正确信息的正确集合视图。我只需使用isEqual:
检查每个数据源回调的collectionView
参数。这适用于除sizeForItemAtIndexPath
之外的每个数据源回调。
我的实施如下:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([collectionView isEqual:self.collViewA]) {
return CGSizeMake(25,25);
}
if ([collectionView isEqual:self.collViewB]) {
return CGSizeMake(50,50);
}
return CGSizeMake(10,10);
}
问题似乎是当两个集合视图都在我的setup方法中实例化时(在初始化这些集合视图的超级自定义视图后调用),只有第二个if语句通过且两个集合视图都有50,50大小的细胞。如果我删除实例化第二个集合视图的代码,而不是第一个如果WILL传递,我将为右视图获得25,25个大小的单元格,但显然没有第二个集合视图。
我没有得到的是我如何在每个其他回调中使用isEqual:
的相同条件逻辑并且没有问题。
答案 0 :(得分:1)
您可以使用标记来解决
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if (collectionView.tag == 1) {
return CGSizeMake(25,25);
}
if (collectionView.tag == 2) {
return CGSizeMake(50,50);
}
return CGSizeMake(10,10);
}