我正在尝试设计一个自定义 UICollectionViewCell
原型(prototype)(在 Xcode 5.0.2 中),但是 Interface Builder 不允许我将单元格添加到我的 UICollectionView
在设计 Nib 时。如果我使用 Storyboard ,我可以设置项目(单元格)的数量,并且 Interface Builder 可以完美地创建和显示单元格,但我无法在 Nib 的 Collection View 中添加单元格。我试过了:
我还看到了几个关于同一问题的问题:
他们都指出要以编程方式和/或为单元格使用另一个 Nib 。我知道怎么做,但是有什么方法可以设计 Collection View 单元格,在 Nib 的同一 View 内的 Collection View 中,就像在 Storyboard 中一样?为什么 Interface Builder 不允许我在它允许(甚至鼓励)完美使用 Storyboard 的 nib 中做到这一点?
请您参考如下方法:
简单的答案是否定的,这是不可能的。将 Storyboard视为 XIB 的集合。 XIB 简单地定义了特定 View 的方面,以便可以在运行时构造它。
关于 Collection View 及其 Storyboard 实现,重要的是要了解 Storyboard 允许嵌套 View Controller 并使用其 XIB 定义 Collection View ,因为这使 Storyboard 的基本范式保持一致。由于 Storyboard是定义应用程序的“故事”或场景的手段,因此它允许声明可重用 View 以在 Collection View 中使用是很自然的。
XIBs 不能这样说,因为 XIBs 背后的基本思想是可重用性。只要 Controller 向 Collection View 注册这些类,这将允许在 XIB 中定义的 Collection View 使用任何单元格。通过这种方式,您可以获得可重用性的好处,因为另一个 Controller 可以使用相同的 XIB 并注册不同的单元等。
因此,我认为允许在 XIB 中声明 Collection View 的受支持单元会更加困惑,因为这违反了 XIB 所追求的单一责任原则(如果可以这样称呼的话)。
您最好的解决方案是定义一个自定义 Collection View 子类,该子类在实例化时注册相关单元格,然后在您的 XIB 中使用此类。