iOS管理嵌套的UICollectionViews问题

时间:2014-03-08 19:11:04

标签: ios objective-c uicollectionview

我在处理嵌套集合视图时遇到了问题。 层次结构如下:

  • outerCollectionView
    • 的UIImageView
    • 标签
    • innerCollectionView
      • 标签
      • 的UIImageView

OuterCollectionView的单元格大小与屏幕大小相同(就像翻页一样) 我将outerCollectionView的委托和数据源设置为UIViewController,将innerCollectionView的委托和数据源设置为包含单元格,如下所示:

    ViewController.m中的
  • -(FeaturedPageCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
    FeaturedPageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"FeaturedCell" forIndexPath:indexPath];
    cell.nestedCollectionView.dataSource = cell;
    cell.nestedCollectionView.delegate = cell;
    [cell.nestedCollectionView setBackgroundColor:[[UIColor whiteColor] colorWithAlphaComponent:.01]];
    cell.venueThumbnail.image = [UIImage imageNamed:[self.venueThumbnails objectAtIndex:indexPath.item]];
    cell.venueNameLabel.text = [self.venueNames objectAtIndex:indexPath.item];
    cell.venueNameLabel.textColor = [UIColor whiteColor];
    cell.venueAddressLabel.text = [self.venueAddresses objectAtIndex:indexPath.item];
    cell.venueAddressLabel.textColor = [UIColor whiteColor];
    [cell setBackgroundColor:[[UIColor grayColor]colorWithAlphaComponent:.1]];
    return cell;
    }
    
  • 在包含innerCollectionView

    的单元格的实现文件中
    -(FeaturedEventCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
    FeaturedEventCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"FeaturedEventCellReuseIdentifier" forIndexPath:indexPath];
    cell.eventDateLabel.text = [self.events objectAtIndex:indexPath.item];
    cell.eventDateLabel.textColor = [UIColor whiteColor];
    cell.eventImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@Flyer%ld.png", self.venueNameLabel.text, (long)indexPath.item +1]];
    return cell;
    }
    

    在这段代码中,我使用包含单元格标签的值来将与该单元格数据相关的内容加载到innerCollectionView中。

非常直接的实施。结果不是我所期望的。基本上发生的事情是数据被正确加载到outerCollectionView的单元格中,但没有加载到innerCollectionView的单元格中(第一个正确加载,但不是其余的)。同时滚动innerCollectionView中的项目将导致其余单元格中的滚动。

我认为让包含单元格成为innerCollectionView的委托会独立于其他人管理它自己的集合视图。我认为我不理解关于集合视图,出列和重用的基本信息。

嵌套集合视图是一种实现我的场景的好方法吗?我试图查看实现嵌套的集合视图,并且找不到一大堆可能是有原因的?

请解释我在我的案例中做错了什么,或指导我做出正确或更好的解决方案。

0 个答案:

没有答案