【发布时间】:2016-02-24 06:00:08
【问题描述】:
我有两个集合视图作为自定义视图的属性作为属性。所以我们称他们为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);
}
问题似乎是当两个集合视图都在我的设置方法中实例化时(在初始化作为这些集合视图的超级的自定义视图之后调用),只有第二个 if 语句通过并且两个集合视图都有 50,50大小的细胞。如果我删除实例化第二个集合视图的代码,那么第一个如果将通过,我将获得 25,25 个大小的单元格用于正确的视图,但显然没有第二个集合视图。
我不明白的是,我如何在所有其他回调中使用与 isEqual: 相同的条件逻辑并且没有任何问题。
【问题讨论】:
标签: objective-c uicollectionview uikit