使用XIB初始化集合视图 - "布局对象必须是非nill"

时间:2015-07-07 14:16:17

标签: xcode collectionview

我在这里看到一个类似的问题,关于以编程方式创建集合视图,但没有使用IB或者nib或xib或者我应该称之为的任何内容。

我的理解是,当使用XIB时,IB中的对象会被IB自动实例化。因此,有意义的是,对于我使用XIB创建的另一个collectionView,它无需以编程方式实例化流布局对象。但是,第二个视图因错误而崩溃:

  

' NSInvalidArgumentException',原因:' UICollectionView必须使用非零布局参数初始化'

我的第一个想法是分配/初始化一个新的流布局,并将其添加到collection self.collectionView.collectionViewLayout = newLayout中的collectionViews布局对象中。 (我在一个视图控制器集合中)。但是,此属性似乎是只读的。因为我使用的是XIB,我认为xcode在某种程度上是在幕后进行布局,但这并不能帮助我找出问题所在。

2 个答案:

答案 0 :(得分:0)

  

我的第一个想法是分配/初始化一个新的流布局并将其添加到collectionViews布局对象

可能是相反的顺序:首先初始化FlowLayout实例,然后用框架和布局初始化CollectionView

答案 1 :(得分:0)

如果有人偶然发现此问题,我想我已经找到了解决方案。假设您在XIB中设置了集合视图布局,我已经与Apple确认,调用UICollectionViewController.init()UICollectionViewController.init(nibName: nil, bundle: nil)时存在错误,导致无法设置集合视图的布局。

解决方法:

要解决此问题,请使用UICollectionViewController.init(nibName: "NameOfMyXIB", bundle: nil),它将适当地设置集合视图的布局。