具有多个单元格类型的UICollectionView

时间:2014-12-09 23:39:32

标签: ios objective-c

我有一个collectionView,其中每个第5个单元格必须与其他单元格不同。

我写了以下代码:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
 {
    if ((indexPath.row + 1) % 5  == 0) {

        return CGSizeMake(screenRect.size.width, screenRect.size.height/5);

    }
      return CGSizeMake(screenRect.size.width/2, screenRect.size.height/2);
 }




- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    if ((indexPath.row + 1) % 5 == 0 ) {
        NSLog(@"iAdCellWithIndex:%ld", (long)indexPath.row);
        CustomCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCell" forIndexPath:indexPath];
        if (!cell)
            cell = [[CustomCollectionViewCell alloc] init];

        return cell;

    }


  ImageThumbCell * cell1 = [collectionView dequeueReusableCellWithReuseIdentifier:@"ImageCell" forIndexPath:indexPath];

  if (!cell1)
      cell1 = [[ImageThumbCell alloc] init];
  [cell1 setResultElement:intermediateResults_[indexPath.row]];

  return cell1;

  }

第1个循环(前5个元素)看起来很好,但是然后加载第6个元素我得到了一个例外:

MyApp[1503:888411] -[CustomCollectionViewCell resultElement]: unrecognized selector sent to instance 0x1a9882a0  

我不明白 - 为什么?第6个单元格(索引为5的单元格)必须是ImageThumbCell类,而不是CustomCollectionView类。

任何人都可以解释这个错误吗?

对不起英语不好。老实说,我正在学习:) //谢谢

1 个答案:

答案 0 :(得分:2)

您发布的代码是调用setResultElement方法,而不是resultElement。因此,该代码不应该产生您所看到的崩溃。

您创建单元格的代码似乎很合理。在每个第5个单元格上,您尝试将不同类型的单元格出列,如果没有可用单元格,则为其他单元格类型分配/初始化。这是有道理的。

我的猜测是你的错误在代码的其他地方。您是否尝试在其他地方读取单元格的resultElement属性的值?