サーバーから新しいデータを取得するときは、次のことを行う必要があります。
UITableView
との既存の行の既存のデータを更新する- アニメーションで新しい行を挿入します。
問題は、ステップ 1[UITableView reloadData]
がいつ終了するかわからないので、ステップ 2を開始できることです。
この状況にどう対処するか?
簡単にするためにステップ1を使用することを好み[UITableView reloadData]
ますが、1つのロジックステップで両方のステップを達成する他のソリューションもクールです.
更新- 多分これは私の間違いです。
どうやら
-既存の行情報でデータモデルを更新
-reloadData
-新しい行情報でデータ モデルを更新します
-insertWorsAtIndexPaths
今すぐ正常に動作します。
ステップ 1 の後にメイン スレッドを強制的に更新する「醜い」方法をいくつか削除しましたが、今のところ、すべて問題ありません。
(「醜い方法は [NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f] を呼び出すことでした。何らかの理由で、過去に動作させるために追加する必要があります)
不思議..今、すべてが本当に大丈夫なのか. 何か問題がある場合は更新します。お手数おかけして申し訳ありません:)
更新 2
これは私が今それを使用する方法であり、問題なく動作するようです:
-データモデルの既存の行を更新してから呼び出します
[UITableView reloadData];
-データモデルに新しい行を追加してから呼び出す
[UITableView beginUpdates]
[UITableView insertRowsAtIndexPath withRowAnimation]
[UITableView endUpdates]