2010-11-19 6 views
0

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

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

は似ている質問です:その質問のためのソリューションの
UITableView Crashes if Data Source Is Updated During Scrolling

一つ、私がしたい正確に何であるハイレベルで解決策を説明します。表が更新されている間のデータ・ソースをフリーズ。しかし、私が把握できないことは、いつデータソースを解凍するかということです。問題は、テーブルが更新されたときに通知される方法が見つからないということです。

アイデア?テーブルが更新されている間にデータソースをフリーズし、テーブルの更新が完了したらそれをアンフリーズする方法を教えてください。

答えて

1

が、私は私の問題があることがわかったAPIに基づいて仮定を作り、それをテストしていませんデータ・コンテナを作業スレッドから変更したためです。この質問への答えは、ソリューションに私を導いた:

Refreshing XML data and updating a UITableView

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

-1

が更新されているときに、 に通知する方法が見つかりませんでした。

私はあなたが、データが最後の行がロードされているかどうかを確認するためにtableView:cellForRowAtIndexPath:にチェックすることによって読み込まれて実行されることを想定することができると思います。

私はちょうど私が実際にテーブルビューがデータソースにアクセスして実行されたときに通知を受け取りたいものの

+0

さて、 'tableView:cellForRowAtIndexPath:'は各行ごとに別々に表示され、表示可能な行に対してのみ呼び出されるという問題があります。その結果、あなたはそれが呼び出されたときに何の考えも持っていません。 –

関連する問題