使用不正确的CollectionView参数调用的CollectionView数据源方法

时间:2016-02-24 06:00:09

标签: objective-c uicollectionview uikit

我有两个集合视图作为属性的自定义视图的属性。我们称之为self.collViewAself.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:的相同条件逻辑并且没有问题。

1 个答案:

答案 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);
}