两个 UICollectionView 实例共享同一个 UICollectionViewFlowLayout 实例?
Posted
技术标签:
【中文标题】两个 UICollectionView 实例共享同一个 UICollectionViewFlowLayout 实例?【英文标题】:Two UICollectionView instances sharing the same UICollectionViewFlowLayout instance? 【发布时间】:2013-01-03 21:18:22 【问题描述】:我不确定这是一个特性还是一个错误,但是当我在一个视图控制器上有两个使用 UICollectionViewFlowLayout
的相同实例的集合视图时,会发生一件有趣的事情。请注意,我没有为此使用 Interface Builder / XIB;我正在将所有内容都放在代码中。
第一个 UICollectionView
有 12 个单元格,但第二个有 20 个单元格。当我重新加载两个集合视图时,两个都表现得好像它们的 contentSize
属性中有 20 个单元格。这意味着当我滚动到第一个 UICollectionView
的右侧并通过第一个(也是唯一的)12 个单元格时,我的应用程序崩溃(因为我从一个只有 12 个单元格的数据的数组中提取数据) .
为了暂时解决这个问题,我实例化了两个相同的UICollectionViewFlowLayout
对象并将每个对象分配给它自己的集合视图。这是正常行为吗?
我才刚刚开始使用UICollectionViews
编写代码,所以如果我散发出任何东西,请原谅我的无知!
【问题讨论】:
【参考方案1】:不要这样做。集合视图和布局对象应该是 1:1 的关系。布局对象有一个属性collectionView
,显然它只能保存一个集合视图的引用。
当集合视图向布局询问其大小等时,布局对象将基于您分配布局的第二个集合视图,因为这将保存在collectionView
属性中。
我在文档中找不到明确声明不在集合视图之间共享布局对象,但上面讨论的属性应该清楚地表明这不是预期用途。
【讨论】:
你摇滚,先生。很好的说明!以上是关于两个 UICollectionView 实例共享同一个 UICollectionViewFlowLayout 实例?的主要内容,如果未能解决你的问题,请参考以下文章
主机ubuntu,加上vmware里面的debian,想共享同一块swap分区