2

これが機能なのかバグなのかはわかりませんが、View Controller に の同じインスタンスを使用する 2 つのコレクション ビューがあるとUICollectionViewFlowLayout、興味深いことが起こります。これにはInterface Builder / XIBを使用していないことに注意してください。すべてをコードでレイアウトしています。

1UICollectionViewつ目のセルには 12 個のセルが含まれていますが、2 つ目のセルには 20 個のセルがあります。両方のコレクション ビューをリロードすると、両方contentSizeのプロパティに 20 個のセルがあるかのように動作します。これは、最初のセルの右にスクロールしてUICollectionView最初の (そして唯一の) 12 個のセルを通過すると、アプリがクラッシュすることを意味します (12 個のセルに相当するデータしかない配列からデータを取得しているため)。

今のところこれを回避するために、2 つの同一UICollectionViewFlowLayoutのオブジェクトをインスタンス化し、それぞれを独自のコレクション ビューに割り当てています。これは正常な動作ですか?

私は でコードを書き始めたばかりUICollectionViewsです。

4

1 に答える 1

4

これをしないでください。コレクション ビューとレイアウト オブジェクトは 1:1 の関係である必要があります。レイアウト オブジェクトにはプロパティ がありcollectionView、明らかに 1 つのコレクション ビューへの参照しか保持できません。

次に、コレクション ビューがレイアウトにサイズなどを問い合わせると、レイアウト オブジェクトは、レイアウトを割り当てた 2 番目のコレクション ビューに基づいてすべてを作成します。これは、collectionViewプロパティに保持されるためです。

ドキュメントには、コレクション ビュー間でレイアウト オブジェクトを共有しないという明示的な記述は見つかりませんでしたが、上記のプロパティは、これが意図された用途ではないことを明確にするはずです。

于 2013-01-03T22:05:41.393 に答える