我似乎无法找到有关如何实现这一目标的任何信息,而我正在努力实现的目标很难解释,但现在是:
我有一个UIViewController,它加载了我用XIB创建的可重用UIViews的“堆栈”。在每个可重用的UIView中都有一个CollectionView,它为数组中的每个字符串创建一个自定义的CollectionViewCell。
我不知道如何做到这一点。毫无头绪,网上没有任何内容涵盖这一确切情况。它似乎比任何其他解释提供的更深一层。每次我尝试为CollectionView创建单元格时,我都会得到“必须为标识符注册一个nib或类或在故事板中连接原型单元”错误。
答案 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的设计目标。