0

タブバーとインターネットから取得したデータに基づくアプリがあります。メインタブにはマップが表示され、他のタブの1つには、を使用して表示されたマップの中心点周辺のインシデントが表示されますUITableView。ユーザーがマップを移動してからインシデントページに移動した場合、テーブルに表示されているインシデントのリストを更新する必要があります。これを行うために、でインシデントを要求し、viewWillAppear:animated:それが(非同期で)完了すると、テーブルビューのreloadDataメソッドを呼び出します。

これは、ユーザーがタブ間をすばやくタップしない限り、うまく機能します(たとえば、インシデントの表示、マップへの移動、マップの移動、インシデントに戻る、マップに戻るなど)。ある時点でNSArray、テーブルビューがアクセスしようとしているときに、インシデントデータソース()が変更されます。

同様の質問があります:
スクロール中にデータソースが更新されるとUITableViewがクラッシュします

その質問の解決策の1つは、まさに私が望んでいる高レベルの解決策を説明しています。テーブルが更新されている間、データソースをフリーズします。しかし、私が理解できないのは、データソースをいつフリーズ解除するかです。問題は、テーブルの更新が完了したときに通知を受け取る方法が見つからないことです。

何か案は?テーブルの更新中にデータソースをフリーズし、テーブルの更新が完了したらフリーズを解除するにはどうすればよいですか?

4

2 に答える 2

1

テーブルビューがデータソースにアクセスし終わったときに通知を受け取りたいのですが、問題はワークスレッドからデータコンテナを変更したことが原因であることがわかりました。この質問への答えは私を解決策に導きました:

XMLデータの更新とUITableViewの更新

私が今していることは、ワーカースレッドに別の配列を入力し、メインスレッドでセレクターを実行して、更新されたデータをテーブルビューで使用されるデータコンテナーにスワップすることです。

于 2010-11-19T03:56:26.580 に答える
-1

問題は、テーブルの更新が完了したときに通知を受け取る方法が見つからないことです。

tableView:cellForRowAtIndexPath:最後の行がロードされているかどうかを確認するためにチェックインすることで、データのロードが完了したと見なすことができると思います。

私はそれをテストしていません、APIに基づいて仮定をしているだけです

于 2010-11-19T03:34:48.893 に答える