使用 Interface Builder 在 nib 中设计 UICollectionView 单元格(无故事板)

2024-04-08

我正在尝试设计一个定制的UICollectionViewCell原型(在 Xcode 5.0.2 中),但是 Interface Builder 不允许我向我的UICollectionView在设计笔尖时。如果我使用故事板,我可以设置项目(单元格)的数量,并且 Interface Builder 可以完美地创建和显示单元格,但我无法将单元格添加到笔尖中的集合视图中。我试过了:

  • 手动将集合视图单元格从对象库拖放到集合视图中。 (失败:不允许我将单元格放置在我视图中的任何位置)
  • 使用故事板中的单元格创建我的集合视图,并将整个视图复制粘贴到笔尖中。 (失败:集合视图被复制但单元格消失了)
  • 使用故事板中的单元格创建我的集合视图,将故事板作为源代码打开,查找我的集合视图单元格,复制相关的 XML,将我的笔尖作为源代码打开,将其粘贴到 XML 中的集合视图中。 (失败:无法在 Interface Builder 中打开笔尖,它会出现错误。当我从源代码中删除单元格时,它会再次打开。not如果您不知道自己在做什么,请尝试此操作。)

我还看到了关于同一问题的几个问题:

  • 是否可以在没有故事板的情况下在 Interface Builder 中创建原型单元? https://stackoverflow.com/questions/8100247/is-it-possible-to-create-prototype-cells-in-interface-builder-without-story-boar
  • UICollectionView 中的自定义标头,带有 Interface Builder,无需 Storyboard https://stackoverflow.com/questions/19002793/custom-header-in-uicollectionview-with-interface-builder-without-storyboard
  • 在笔尖而不是故事板中制作单元原型 https://stackoverflow.com/questions/8574188/prototype-cells-in-a-nib-instead-of-a-storyboard

他们都指出以编程方式执行这些操作和/或为单元使用另一个笔尖。我知道怎么做,但是有什么方法可以在集合视图内设计集合视图单元格在同一视图内在笔尖中,就像在故事板中一样?为什么 Interface Builder 不让我在 nib 中这样做,它允许(甚至鼓励)完美地使用情节提要?


简单的答案是否定的,这是不可能的。将故事板视为 XIB 的集合。 XIB 只是定义特定视图的方面,以便可以在运行时构建它。

关于集合视图及其故事板实现,重要的是要了解故事板允许嵌套视图控制器并使用其 XIB 定义集合视图,因为这使故事板的基本范例保持一致。由于故事板是定义应用程序的“故事”或场景的方法,因此它允许声明在集合视图中使用的可重用视图是很自然的。

XIB 则不然,因为 XIB 背后的基本思想是可重用性。只要控制器向集合视图注册这些类,这将允许 XIB 中定义的集合视图具有与之一起使用的任何单元格。通过这种方式,您可以获得可重用性的好处,因为另一个控制器可以使用相同的 XIB 并注册不同的单元等。

因此,我认为允许在 XIB 内声明集合视图受支持的单元格会更加混乱,因为这打破了 XIB 所追求的单一职责原则(如果可以这样称呼的话)。

最好的解决方案是定义一个自定义集合视图子类,在实例化时注册相关单元格,然后在 XIB 中使用此类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Interface Builder 在 nib 中设计 UICollectionView 单元格(无故事板) 的相关文章

随机推荐