使用Interface Builder在没有故事板的情况下在nib中设计UICollectionView单元格

Can*_*ğlu 27 xcode interface-builder nib uicollectionview uicollectionviewcell

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

  • 将集合视图单元格从对象库手动拖放到集合视图中.(失败:不允许我将单元格放在我视图中的任何位置)
  • 使用storyboard中的单元格创建我的集合视图,并将整个视图复制粘贴到nib中.(失败:复制集合视图但单元格已消失)
  • 使用storyboard中的单元格创建我的集合视图,打开storyboard作为源代码,查找我的集合视图单元格,复制相关的XML,打开我的nib作为源代码,将其粘贴到XML集合视图中.(失败:无法打开在Interface Builder笔尖,它给了错误,当我删除源代码中的细胞,它再次打开不要.试试这个,如果你不知道自己在做什么.)

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

他们都指出以编程方式和/或使用另一个笔尖进行细胞处理.我知道怎么做,但有没有办法设计集合视图单元格,在一个nib中同一视图内的集合视图中,就像在故事板中一样?为什么Interface Builder不允许我在nib中执行它,它允许(甚至鼓励)完美地使用storyboard?

Dan*_*sko 26

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

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

对于XIB而言,这是不可能的,因为XIB背后的基本思想是可重用性.只要控制器使用集合视图注册这些类,这将允许在XIB中定义的集合视图具有与其一起使用的任何单元.这样您就可以获得可重用性的好处,因为另一个控制器可以使用相同的XIB并注册不同的单元格等.

因此,我认为允许在XIB内声明集合视图的受支持单元格会更加困惑,因为这违反了XIB所追求的单一责任原则(如果可以称之为).

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