如何在 UICollectionViewCell 中添加 UICollectionView?

Posted

技术标签:

【中文标题】如何在 UICollectionViewCell 中添加 UICollectionView?【英文标题】:How do I add a UICollectionView inside a UICollectionViewCell? 【发布时间】:2017-03-13 15:24:20 【问题描述】:

我有一个使用可视 XIB 文件创建的 UICollectionViewCell。

集合视图水平显示。

我想在单元格的页脚中向该单元格添加另一个 UICollectionView。

单元格本身就是一张代表一些信息的“卡片”;

此图有助于说明我所追求的;

我的想法是我可以根据需要显示/隐藏骰子图像,包括零;以水平方式作为当前 UICollectionCell 内的子部分。

尝试使用故事板;

集合单元 XIB 不允许我向其添加另一个 UICollectionView 如果我在同一个故事板中创建一个独立的 UICollectionView,它不会让我向其中添加 UICollectionCell

到目前为止,我唯一的解决方案是手动创建 5 个图像视图,然后将它们附加到收集出口;然后我需要做一个 for 循环来显示/隐藏每个模具图像。

【问题讨论】:

【参考方案1】:
    在界面构建器中使用 Collection View 创建普通 View Controller 在单独的 XIB 中创建 CollectionViewCell。在此单元格内插入另一个 CollectionView

    在第一个 VC 中将 collectionViewCell 注册为 sectionHeader:

    tableView.register(UINib(nibName: DashboardPagerHeader.cellIdentifier, bundle: nil), forHeaderFooterViewReuseIdentifier: DashboardPagerHeader.cellIdentifier)
    

    像以前一样在单独的 xib 中创建另一个 CollectionViewCell

    在步骤 4 中创建的 awakeFromNib 寄存器单元中的第一个集合视图单元的类内部如下:

    override func awakeFromNib() 
       super.awakeFromNib()
       collectionView.delegate = self
       collectionView.dataSource = self
       collectionView.register(UINib(nibName: "  DashboardHeaderCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: DashboardHeaderCollectionViewCell.cellIdentifier)
    
    

【讨论】:

我无法获得 UICollectionView 的 forHeaderFooterViewReuseIdentifier;但我确实看到了forSupplementaryViewOfKind 我发现这些步骤有点混乱。我已经完成了步骤 (1) (2),但我无法使用集合视图注册标题。我创建了新的集合视图和 xib(按照第 4 步和第 5 步),但我不明白第 5 步的去向。它进入父母一号,孩子一号吗?【参考方案2】:

你不需要tableview,只是在你的collectionview单元xib中拖动另一个集合并将其滚动属性设置为垂直,然后从内部collectionview创建xib。

在外部collectionview单元格中使用该方法设置委托和数据源

// code
override func awakeFromNib() 
   super.awakeFromNib()
   serInnerCollectionView()


 func serInnerCollectionView() 

 collectionViewInner.delegate = self
   collectionViewInner.dataSource = self
   collectionViewInner.register(UINib(nibName: "  FooterCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "FooterCollectionViewCellIdentifier")


【讨论】:

您是说将集合视图添加到当前集合视图单元格吗? 我刚试过这个,我很惊讶它成功了;但我不确定这真的是最好的方法。我创建了我的父集合视图单元格,我们称之为 Outer。在这个 Outer 的 XIB 文件中,我添加了另一个 UICollectionView 并绑定了插座。下一个;我添加了您建议的代码并进行了一些更改。然后创建了另一个collectionviewcell和XIB,我们称之为Inner。我用红色为内部着色。它在模拟器中工作。 当我得到它的工作时,我会接受答案,但我会环顾四周,看看是否有不同或更有效的方法。谢谢 我真的很难在 Objective-C 的 collectionVew Cell 中创建一个 Collectionview。你能帮帮我吗?

以上是关于如何在 UICollectionViewCell 中添加 UICollectionView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中刷新 UICollectionViewCell?

如何在 UICollectionViewCell 内缩放 UIScrollView?

如何在重新加载时清除 UICollectionViewCell?

Swift:如何在 UICollectionViewCell 中使用“prepareForSegue”?

点击时如何在 UICollectionViewCell 中制作此动画?

如何确定何时显示 UICollectionViewCell?