UICollectionView
のメソッドを使用してフィルタリング操作 (sorta) を実行しようとしていますperformBatchUpdates
。ブロック内でセルを挿入し、セルを移動し、セルを削除しています。奇妙な結果が得られているので、この動作が実際にサポートされているかどうか疑問に思っています (指標がすべて台無しになっていると考えています)。各「タイプ」のアクション (挿入、移動、および削除) を個別のブロックに分割する必要があるだけですか?
2 に答える
さまざまな操作の順序を探しているこの回答を見つけたので、アイテムの挿入削除 (移動なし) と組み合わせた場合のセクションの挿入/削除に関して発見したことを共有したいと思いました。空になったときにセル/セクションをフィルタリングしUICollectionView
て削除し、検索をクリアするときにセル/セクションを再作成する作業をしていました。私は本質的に配列の配列でそれを支えていました。
データソースから削除したいセクションを削除する前に、行とセクション インデックスを使用して削除済みアイテムを計算する必要があることがわかりました。(前節削除)
次に、データソースからセクションを削除し、削除のためにそれらのインデックスを保存します。
次に、新しいセクションを挿入/必要に応じて並べ替え/、挿入されたすべてのセクションを追跡します。
最後に、新しいセクション インデックスに基づいて、挿入された行を計算します。
Deleted Sections: (pre deleted index)
Inserted Sections: (indexes after deleting the deleted sections and adding these back in)
Deleted Rows: (row, pre-deleted section)
Inserted rows: (row, section based on index after inserting new sections)
これはiOS 9でした。
内部のすべての操作performBatchUpdates
は、現在のインデックスに対して実行されます。いいえ、挿入/削除/移動を異なるブロックに分割する必要はありません。まさにそれperformBatchUpdates
が目的です。あなたが見ている奇妙なことのいくつかのコードや説明がなければ、助けるのは難しいです...