タブバーとインターネットから取得したデータに基づくアプリがあります。メインタブにはマップが表示され、他のタブの1つには、を使用して表示されたマップの中心点周辺のインシデントが表示されますUITableView
。ユーザーがマップを移動してからインシデントページに移動した場合、テーブルに表示されているインシデントのリストを更新する必要があります。これを行うために、でインシデントを要求し、viewWillAppear:animated:
それが(非同期で)完了すると、テーブルビューのreloadData
メソッドを呼び出します。
これは、ユーザーがタブ間をすばやくタップしない限り、うまく機能します(たとえば、インシデントの表示、マップへの移動、マップの移動、インシデントに戻る、マップに戻るなど)。ある時点でNSArray
、テーブルビューがアクセスしようとしているときに、インシデントデータソース()が変更されます。
同様の質問があります:
スクロール中にデータソースが更新されるとUITableViewがクラッシュします
その質問の解決策の1つは、まさに私が望んでいる高レベルの解決策を説明しています。テーブルが更新されている間、データソースをフリーズします。しかし、私が理解できないのは、データソースをいつフリーズ解除するかです。問題は、テーブルの更新が完了したときに通知を受け取る方法が見つからないことです。
何か案は?テーブルの更新中にデータソースをフリーズし、テーブルの更新が完了したらフリーズを解除するにはどうすればよいですか?