2009-05-18 5 views
2

まず、その質問がばかだと申し訳ありませんが、私はObjCの初心者です。 私のiPhoneアプリケーションでは、Viewが1つしかないので、私は1つだけのViewControllerにCLLocationManagerを実装しています。いいえ、私のアプリケーションでもっと多くのビューを必要とし、すべてのビューはCLLocationmanagerから位置情報が必要です。CLLocation Managerと複数のViewControllersについてのいくつかのアーキテクチャに関する質問

私は、すべてのViewControllerにCLLocationManagerを実装したくないので、実装をViewControllerからAppControllerに移す必要があると思いますか?

今、私はViewCotrollerがどのように位置情報を取得するのか分かりません。私は情報を格納するシングルトンクラスを実装することを考えていました。そして、すべてのVieControllerはそこから情報を得ることができます。しかし、そのためには、ViewControllerのタイマーなどを実装して、新しいDataが利用可能かどうかを毎秒チェックする必要があります。それは本当に良いと嘘つきではありません。

ViewControllersは自動的に新しい位置情報を取得できますか?多分私はオブザーバーのような何かが必要ですが、maybyココア/ ObjCで何か準備ができていますか? 私は自分のアプリケーションで間違った方向にいると思います。

答えて

4

twickl任意のヘルプ

のためにどうもありがとうございます。ここの出発点として有用であるかもしれない私の頭の上からの提案です。あなたは、すべてのViewController内のCLLocationManagerへの接続を設定するコードを繰り返したくないと思うのは間違いありません。しかし、私はあなたのAppController(私はAppDelegateを意味すると仮定している)にそのコードを移動しません。

私は汎用のViewControllerサブクラスを作成し、LocationAwareViewControllerのようなものを呼び出します。 LocationAwareViewControllerは、CLLocationManagerへの接続を作成し、更新に「サインアップ」する責任があります。

LocationAwareViewControllerをCLCLocationManagerのデリゲートとしてセットアップします。 LocationAwareViewControllerは、CLLocationManagerDelegateメソッドの一部またはすべてを実装します。このViewControllerは、新しい位置情報が利用可能になるたびに更新を受け取ります。ポーリングタイマーを設定する必要はありません。

それぞれの特定のViewControllerは、LocationAwareViewControllerのサブクラスです。また、CLLocationManagerDelegateメソッドをオーバーライドして、担当ビューの特定のアクションを実行することもできます。

免責事項:Core Locationを使用する機会はまだありませんでしたので、CLLocationManagerがドキュメントだけでどのように動作するかについて私は期待しています。かなり単純ですが、誰かが自分の経験に基づいてより多くの情報を提供できるかもしれません。

関連する問題