タイトルは私が得たエラーであり、その理由はわかりませんが、ここにいくつかの情報があるので、ここの誰かが私を解明できることを願っています.
これにより、セル自体のフレームを計算する必要がなくなるため、サブクラス化UICollectionViewFlowLayout
しました(おそらくこれは問題ですか?)prepareLayout
. 次に、UICollectionViewLayoutAttributes
情報を使用して、それを重ねる補足ビューを計算し、希望するレイアウトを取得します。
performBatchUpdates:completion:
ビューを追加、削除、更新するために使用します。挿入は正常に機能しますが、アイテムの削除は、タイトルに示されているエラーが表示された場合です。
エラーが発生する理由はわかっていますが、なぜ発生する必要があるのか わかりません。問題を引き起こすシナリオの例で明確にする
- 1 補足ビュー 1 セクションで 1 項目から開始
- さらに 2 つのアイテムを追加します ( 3 つの
prepareLayout
アイテムと 3 つの補足ビューを参照) - アイテムの削除 (
prepareLayout
2 つのビューと 2 つの補足ビューが表示されます) layoutAttributesForSupplementaryViewOfKind:atIndexPath:
section:0 と item:2のインデックス パスの属性を要求するように呼び出されます- 以前に 2 つのアイテムと 2 つの補足ビューを設定する準備レイアウトを呼び出したにもかかわらず、3 つ目の補足ビューの属性を要求したためにクラッシュしました。
- 諦めと絶望に手を上げて
私が知る限り、問題のある機能は次のとおりです。
- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
{
return self.layoutInfo[elementKind][indexPath];
}
もちろん、これはの内部ネットワークによって自動的に呼び出されるUICollectionView
ため、そのインデックス パスでその補足ビューを要求している理由がわかりません。
誰でもアイデアはありますか?おそらくそれは私の使い方performBatchUpdates:completion:
ですが、補足ビューを追加するまで削除はうまくいきました。必要に応じて、より多くのコード/説明を提供できます。