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



>我有两个集合视图作为自定义视图的属性作为属性。 所以让我们称它们为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);
}

问题似乎是,当在我的设置方法中实例化两个集合视图时(在初始化这些集合视图的超级自定义视图后调用),只有第二个 if 语句通过并且两个集合视图都有 50,50 个大小的单元格。 如果我删除实例化第二个集合视图的代码,那么第一个如果 IF 将通过,我将获得 25,25 个大小的单元格以获得正确的视图,但显然没有第二个集合视图。

我不明白的是我如何在其他回调上使用相同的条件逻辑和isEqual:并且没有问题。

您可以使用标签来解决这个问题

- (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);
}

最新更新