CollectionView 嵌套在 Collectionview 中
Posted
技术标签:
【中文标题】CollectionView 嵌套在 Collectionview 中【英文标题】:CollectionView nested inside Collectionview 【发布时间】:2017-07-24 06:15:40 【问题描述】:我见过一个集合视图嵌套在表格视图中的解决方案,但对于我的应用,我需要有 2 个集合视图,因为这样可以更轻松地执行其他一些操作。
所以让我们调用仅垂直滚动的根集合视图 VerticalCollectionView 和仅水平滚动的嵌套集合视图 HorizontalCollectionView。我使用情节提要创建了它们。下面你会看到橙色是垂直,绿色是水平,里面有一个标签。
我已将两个集合的委托和数据源设置为同一个 CollectionViewController。
我通过检查委托方法引用的 tableview 来区分 2 个不同的单元格
我的问题是 HorizontalCollectionView 没有被实例化。我已经为 VerticalCollectionView、背景颜色、项目数等工作了一切。在 VerticalCollectionViewCell 中,我有一个引用 HorizontalCollectionView 的 IBOutlet
【问题讨论】:
尝试在垂直集合视图的 cellForRow 调用中重新加载水平集合视图 在collectionView
上手动调用reloadData
。
尝试重新加载 cellForRow 中的垂直数据和 VerticalCell 中的 awakeFromNib 内部,我得到“致命错误:在展开可选值时意外发现 nil”
【参考方案1】:
我在最近的应用程序中经常使用嵌套的 collectionViews。起初它对我不起作用,但当我学会它时,它变得非常简单。
不要将 HorizontalCollectionView 委托和 dataSource 设置为同一个 CollectionViewController,而是创建一个 UICollectionViewCell,并在单元格的 awakeFromNib()
函数中设置委托和数据源,并在该单元格中编写 HorizontalCollectionView 函数。它就像一个魅力;)
如果您需要更详细的答案,请告诉我。
【讨论】:
我有一个表格视图,该表格视图的单元格有一个水平分页集合视图,在这个集合视图中有另一个集合视图但问题是当我更改表格视图单元格高度时集合视图不适合单元格但我在故事板中使用了约束 如果collectionView不适合,连同约束(我假设你给出了正确的约束)尝试为collectionView实现这4个委托函数并根据tableView的高度给出单元格的大小@987654323 @ 这是我所有的代码,你能帮我做吗? ***.com/questions/49850234/…【参考方案2】:如果有人从 WWDC 19 开始就在这里寻找,Apple 已经为 UICollectionViews 引入了 CompositionalLayout,这使得这些任务变得更加容易。
应该在这里阅读:
https://developer.apple.com/videos/play/wwdc2019/215/
【讨论】:
注意这是ios 13+以上是关于CollectionView 嵌套在 Collectionview 中的主要内容,如果未能解决你的问题,请参考以下文章
iOS:在 Swift3 中,在 UICollectionViewLayout 部分,我如何访问主要的 CollectionView 属性?
iOS 8 中的嵌套 CollectionView、自动布局和旋转
collectionView 和 tableView的嵌套使用