私は、タブバーとインターネットから取得したデータに基づいてアプリを持っています。メインタブには地図が表示され、他のタブにはUITableView
を使用して表示された地図の中心点のインシデントが表示されます。ユーザーがマップを移動してインシデントページに移動すると、表に表示されているインシデントのリストを更新する必要があります。これを行うには、viewWillAppear:animated:
でインシデントを要求し、完了すると(非同期に)テーブルビューのreloadData
メソッドを呼び出します。私のデータソースがUITableViewの下から変更されています
ユーザーがタブ間をすばやくタップして(インシデントの表示、地図への移動、地図の移動、インシデントへの戻り、地図への戻しなど)、これは美しく機能します。ある時点で、インシデントデータソース(NSArray
)は、テーブルビューがアクセスしようとしている間に変更されます。ここで
は似ている質問です:その質問のためのソリューションの
UITableView Crashes if Data Source Is Updated During Scrolling
一つ、私がしたい正確に何であるハイレベルで解決策を説明します。表が更新されている間のデータ・ソースをフリーズ。しかし、私が把握できないことは、いつデータソースを解凍するかということです。問題は、テーブルが更新されたときに通知される方法が見つからないということです。
アイデア?テーブルが更新されている間にデータソースをフリーズし、テーブルの更新が完了したらそれをアンフリーズする方法を教えてください。
さて、 'tableView:cellForRowAtIndexPath:'は各行ごとに別々に表示され、表示可能な行に対してのみ呼び出されるという問題があります。その結果、あなたはそれが呼び出されたときに何の考えも持っていません。 –