将collectionView添加到Header

时间:2017-05-19 21:32:21

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

我正在尝试将collectionView添加到我的CollectionView 标题我认为中的collectionView内的collectionView。我已经获得了标题设置,当我运行应用程序时,我在标题部分获得了一个空白的collectionView,但我可以在哪里编写此collectionView。

我在header.swift文件中创建了一个插座,我可以在我的主集合视图文件中访问它,但我无法配置单元格,设置节数等。如果是只是标题中的标签我可以在这里设置文本等,但我不知道如何在这里配置collectionView。 我尝试创建一个CollectionViewController文件,只是将其链接到标题中的colectionView,但这并不起作用。如何为该collectionView(在标题中)创建子类?

Swift 3

1 个答案:

答案 0 :(得分:0)

好的,这笔交易:我猜你使用UICollectionViewController或带有UICollectionView的UIViewController来实现UICollectionViewDataSource协议,对吧?这将大大不必要地膨胀你的UIViewController。

更好的方法是创建一个单独的对象来实现集合视图的DataSource。一个用于主集合视图,另一个用于标题集合视图。然后你只需将它们连接起来。您必须在某处保留对数据源对象的引用。

通常情况下,在视图控制器的viewDidLoad中,您会收到集合视图并致电collectionView.delegate = theDataSourceObject

theDataSourceObject可能是你的UIViewController lazy var myDataSourceObject = MyDataSource()中的懒惰变种

然后,无论您在何处创建标题集合视图,还可以设置其数据源。我希望你理解我的意思,这个答案可以帮助你。如果您应该从中学到一件事,那么您的视图控制器不一定必须是UITableView或UICollectionView的数据源和/或委托。

它们可以是完全不同的物体。单例是一个选项,也可以存储数据源的实例变量。