如何拥有多个带有标题的 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

如何在 MAUI 中拥有一个命令(能够)视图或一个带有内容的按钮?

带有建议的多个可搜索活动

如何在带有 Flutter 的可滚动视图中拥有具有可变高度内容的 TabView?