如何在 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”?