2

シナリオ: ネットワーク リソースから読み込まれたデータを表示する UITableView があります。そのリソースとの同期は完了するまでに時間がかかる場合があり、結果は少しずつ読み込まれます。ネットワーク通信は、NSOperationQueue を介してバックグラウンドで行われます。結果は通知によって配信され、制御はメイン スレッドに戻されて新しい結果が挿入されます。これが発生している間、ユーザーはテーブル内のデータに対して操作を実行できます。

問題: 同期が行われている間にユーザーがテーブル内の行の 1 つで削除操作を実行すると、テーブル ビューが削除をアニメートしている間に行数が変更される可能性が非常に高くなります (アニメーションが数回繰り返されるため)。イベント ループを介して、新しい結果の通知ハンドラーが呼び出されます)。これにより、内部不整合例外が発生します。

新しい結果がバッチで読み込まれると、同期の結果、テーブル ビューで reloadData が呼び出されます。さらに重要なことに、行数が変更されます。

新しい結果の処理を遅らせることができるように、テーブルがアニメーション化されている (または終了時に通知される) ことを知る方法を見つけることができませんでした。これは可能ですか?

4

1 に答える 1

0

すべてのテーブルの変更を beginUpdates/endUpdates にラップします。ドキュメントによると、これらはネストできるため、同時の挿入と削除で問題が発生することはありません。

于 2013-01-02T20:55:06.713 に答える