iOS Swift - CollectionView INSIDE UIView XIB INSIDE UIViewController

iOS Swift - CollectionView INSIDE UIView XIB INSIDE UIViewController

我似乎找不到任何关于如何实现这一目标的信息,我想要实现的目标有点难以解释,但它是:

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

我不知道如何做到这一点。没有任何线索,网上也没有任何内容涵盖这种确切情况。它似乎比任何其他解释所提供的更深一层。每次我尝试为 CollectionView 创建单元格时,我都会收到 "Must register a nib or a class for the identifier or connect a prototype cell in a storyboard" 错误。

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

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

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

为什么你必须这样做的原因我一直没明白。

您可以像这样为收集单元格注册一个笔尖:

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

然而,在我看来,将一个 CollectionViewController 与部分和原型单元格一起使用要比使用多个 CollectionView 的自定义 UIView 'stack' 容易得多。这正是 CollectionViewController 的设计目的。