2013-01-03 230 views
2

我不确定这是一个功能还是一个错误,但是当我在使用同一个实例UICollectionViewFlowLayout的视图控制器上有两个集合视图时,会发生一个有趣的事情。请注意,我没有使用Interface Builder/XIB作为其中的任何一个;我将所有内容都放在代码中。两个UICollectionView实例共享相同的UICollectionViewFlowLayout实例吗?

第一UICollectionView有十二个细胞,但第二个具有20当我重装都收集意见,当作两人contentSize酒店有20个细胞在其中。这意味着当我滚动到第一个UICollectionView的右侧并通过第一个(也是唯一的)12个单元格时,我的应用程序崩溃(因为我从只有12个单元格的数据中提取数据)。

现在为了解决这个问题,我正在实例化两个相同的对象,并将每个对象分配给它自己的集合视图。这是正常的行为吗?

我只是开始用UICollectionViews编写代码,所以请原谅我的无知,如果我泄露任何!

回答

4

不要这样做。集合视图和布局对象应该是1:1关系。该布局对象有一个属性,collectionView,显然它只能保存对一个集合视图的引用。

当集合视图然后询问布局的大小等等时,布局对象将基于您分配布局的第二个集合视图上的所有内容,因为这将保留在collectionView属性中。

我无法在文档中找到显式声明不在共享视图之间共享布局对象,但上面讨论的属性应该清楚地表明这不是预期的用途。

+0

你摇滚,先生。很好的说明! –