2

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

第一个UICollectionView有 12 个单元格,但第二个有 20 个单元格。当我重新加载两个集合视图时,两者都表现得好像它们的contentSize属性中有 20 个单元格。这意味着当我滚动到第UICollectionView一个(也是唯一的)12 个单元格时,我的应用程序崩溃(因为我从一个只有 12 个单元格的数据的数组中提取数据)。

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

我才刚刚开始用 编写代码UICollectionViews,所以如果我散发出任何东西,请原谅我的无知!

4

1 回答 1

4

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

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

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

于 2013-01-03T22:05:41.393 回答