2012-01-03 6 views
0

私は一定の時間間隔で、そしてユーザーがアプリケーションデータをブラウズしているときにWebからアップデートを取得するiPhoneアプリを構築しています。サーバーからの更新を取得した後のリロード(テーブル)ビュー

更新プロセスを処理するupdateManagerというクラスがあります。 更新処理が完了すると(0.1〜3.0秒後)、アプリ内のデータは変更される可能性がありますが、古い(偽の)データは引き続き表示されます。これは、ユーザーが(ドリルダウン)テーブルビューを表示しており、データが存在しないセルを選択すると大きな問題を引き起こします。

現在のビュー(コントローラ)に別のクラスからアクセスして(テーブル)ビューを再ロードする方法はありますか?

私はこの記事を見て:アップデートが進行中

EDITあるときに、ユーザーがビューのを変更した可能性があるので、updateManagerに現在のビューコントローラを送信することはできませんReload a tableView from the AppDelegateが、私はとの問題を考えます更新中のユーザー切り替えビューはまだありませんか?

答えて

1

これが最善の解決策であるかどうかはわかりません。代わりにObserverパターンを使用すると、よりデカップリングされたデザインが得られます。データが変更されたときに通知を送信するには、NSNotificationCenterを使用してください。次に、データを表示しているビューは、それらの通知にサブスクライブし、このようなイベントが発生したときにテーブルをリロードできます。

+1

ありがとうございました。登録するだけでなく、購読したビューを却下する前に登録を解除することを忘れないでください。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html – Tieme

0

私は、データが変更された場合はテーブルビューとのあなたのViewControllerは、通知(通知が発行された場合、あなたのテーブルビューをリロード)して、更新のクラスの火災に通知を聞くNSNotification Center

でNSNotificationを解雇でしょう。

+0

更新中にユーザーがテーブルビューを却下した場合はどうなりますか? – Tieme

関連する問題