如何拥有多个带有标题的 UICollectionView 并使其水平滑动
Posted
技术标签:
【中文标题】如何拥有多个带有标题的 UICollectionView 并使其水平滑动【英文标题】:How to have multiple UICollectionView with header and make it horizontally swiped 【发布时间】:2016-06-24 03:37:23 【问题描述】:我是 swift 和 ios 的新手。我想实现如下所示的视图,并使每个部分都能够水平滑动。 a prototype 我有几个设计问题:
-
我应该有一个 UICollectionView 还是三个?
如果我还想打开每个部分,例如单击“早餐”以进入早餐全视图,那么问题 1 的答案是否仍然相同?
对于标题,最好有标签还是将其设置为节标题。因为我认为只有一个标签要容易得多。
在 swift 上是否有任何示例可以做到这一点?感觉这是一个非常标准的正常的。
【问题讨论】:
你可以上下滚动查看不同的部分吗? 使用UITableViewCell
并在该单元格内添加 UICollectionView
并水平滚动。它会解决你的问题。
【参考方案1】:
它可以以任何一种方式实现,但我可能会使用一个集合视图。将其拆分将由您将使用函数实现的不同部分完成
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
return 3
然后您将决定每个部分中的项目数:
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 3
然后您将定义每个单元格的内容:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)
// Configure the cell
return cell
然后,当他们使用
选择单元格时,您将移动到新的视图控制器override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool
return true
indexPath 具有 indexPath.section 和 indexPath.row,它们允许您在函数中需要时访问每个单元格的确切位置。您还需要为 collectionView 设置委托/数据源以使其工作,并在不离开 viewController 的情况下更新单元格的内容时调用 collectionView.reloadData()。如果您使用具有 3 个部分的单个 collectionView,则使用标题比使用标签更容易,如果您使用 3 个表格视图,使用标签或标题同样复杂,但我不推荐这种方式。最后...link to collectionView tutorial
【讨论】:
感谢@Sethmr,这很有帮助,我尝试了这种方法,效果很好。另一个问题是,是否有可能让每个部分都可以水平滚动,而整个 collectionView 可以垂直滚动? 这是可能的,但这需要更多的工作。在同时使用垂直和水平滚动时,您必须非常小心。必须设置优先级,我没有时间深入研究。在尝试深入研究所有内容之前,我会仔细阅读有关 ScrollViews 和 Collection 视图的文档。以上是关于如何拥有多个带有标题的 UICollectionView 并使其水平滑动的主要内容,如果未能解决你的问题,请参考以下文章
如何拥有一个带有 json 动态成员的 WCF DataContract