10

アプリでを処理しているときUICollectionViewに、データのリロードに関連する奇妙な問題に遭遇しました。reloadData多くのデバッグとログの分析の後、if の直後にinsertItemsAtIndexPaths以下の恐ろしいエラーが発生することが保証されているという結論に達しました。

名前:NSInternalInconsistencyException理由: 無効な更新: セクション 0 の項目数が無効です。更新後の既存のセクションに含まれる項目の数 (1) は、更新前にそのセクションに含まれる項目の数 (1) に等しい必要があります。またはそのセクションから挿入または削除されたアイテムの数を引いたもの (1 挿入) ...

これを一貫して行うための唯一の方法は、 へのコールが到着したときに、 が内部的にUICollectionViewまだビジーであることです。" " が完了前に連続して 2 回呼び出されるという事実は、そのメソッドが call 他のケースで連続して 2 回呼び出されることはないため、これをサポートしているようです。reloadDatainsertItemsAtIndexPathscollectionView:numberOfItemsInSectioninsertItemsAtIndexPaths

誰かが同様の動作を見たことがありますか、または私の分析を確認したり、適切な回避策を提案したりできますか?

更新: はい はい、関連するすべての呼び出しがメインスレッドで発生することを確認しました。

更新 2 : この状況に陥る理由がまったく疑問視されているため: 私は Monotouch を使用しており、問題のコードは、UICollectionView をコレクションにバインドしたままにするために、このイベントを適切な呼び出しで発生させる一般的な .Net コレクションを維持することを目的としています。同期中。ソース コレクションがクリアされると、Resetアクションに反応し、アイテムが挿入されると 1 つ以上のAddアクションが続き、上記の問題が発生します。お役に立てれば。

4

1 に答える 1