iOS Swift - CollectionView INSIDE UIView XIB INSIDE UIViewController

时间:2017-07-04 23:25:22

标签: ios iphone swift uicollectionview collectionview

我似乎无法找到有关如何实现这一目标的任何信息,而我正在努力实现的目标很难解释,但现在是:

我有一个UIViewController,它加载了我用XIB创建的可重用UIViews的“堆栈”。在每个可重用的UIView中都有一个CollectionView,它为数组中的每个字符串创建一个自定义的CollectionViewCell。

我不知道如何做到这一点。毫无头绪,网上没有任何内容涵盖这一确切情况。它似乎比任何其他解释提供的更深一层。每次我尝试为CollectionView创建单元格时,我都会得到“必须为标识符注册一个nib或类或在故事板中连接原型单元”错误。

2 个答案:

答案 0 :(得分:0)

想出来。是的,如果要在XIB中使用CollectionView,并且您有自定义的CollectionViewCell,则必须为CollectionViewCell创建XIB。在这种情况下,你不能只有一个没有XIB的CollectionViewCell。然后,在包含XIB的ViewController中,您必须使用:

xibView.collectionView.register(UINib(nibName: "CustomCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CustomCollectionViewCell")

大多数教程都说在viewDidLoad中执行此操作,但是我在ViewController中创建的不只是一个XIB,而是基于从数据库中提取的数据创建的一堆XIB。所以我在构建每个XIB的循环中执行此操作。我担心这不起作用,但确实如此。

为什么你必须这样做的原因仍然是我无法实现的。

答案 1 :(得分:0)

您可以为这样的集合单元注册一个nib:

let cellNib = UINib(nibName: "MyCellAsNib", bundle: nil)
collectionView?.registerNib(cellNib, forCellWithReuseIdentifier: "myCell")

但在我看来,将一个CollectionViewController与section和prototype单元格一起使用会更容易,而不是使用自定义的UIView'堆栈。多个CollectionViews。这正是CollectionViewController的设计目标。