0

私のアプリには、5つのナビゲーションコントローラーがあります。ナビゲーションコントローラーの1つに、(Sqliteデータベースからの)同じデータを共有する3つのビューコントローラーが表示されます。唯一の違いは、データの表示方法が異なることです。

  • ViewController1=国別に並べ替えられたレシピ
  • ViewController2=野菜でソートされたレシピ
  • ViewController1=飲むワインでソートされたレシピ

SqliteデータベースにはWebサービスが提供されています。新しいレシピはいつでも追加される可能性があるため、アプリケーションがアクティブになるたびにデータベースを更新する必要があります。また、アプリケーションは任意のView Controllerでアクティブになる可能性があるため(アプリがバックグラウンドに移行したときに選択したものに応じて)、3つのViewController実装ファイルに更新コードを記述する必要があります。

ユーザーがナビゲーションコントローラーを切り替えるとWebサービスが呼び出されるため、この方法はうまくいかないと思います。これにより、頻繁で役に立たないトラフィックとデータベースの更新が発生します。アプリケーションの使用(アクティブ/バックグラウンド)ごとに1回だけジョブを実行したいと思います。私はUINavigationControllerDelegateについて考えていました。このようにして、アプリケーションがアクティブになったとき、およびナビゲーションコントローラーが何であれ、1回だけ更新を実行します。

私の質問は:

  • これは良い方法だと思いますか、それとも別の方法を提案しますか?
  • この場合、UINavigationControllerDelegateを実装する方法を知っていますか?
  • これはAppDelegateでのみ可能ですか、それとも外部で実行できますか?

助けてくれてありがとう。

4

1 に答える 1

0

あなたは正しい方向に進んでいます。更新を行う別のクラスを作成し、appDelegateからそのクラスを呼び出す必要があると思います。

 applicationDidBecomeActive:

方法。それは実際にはナビゲーションコントローラーとは何の関係もないはずです。

于 2012-02-05T18:26:42.773 に答える