2

位置の決定には時間がかかります。ロケーションマネージャーはいつどこで開始する必要がありますか?

現在、結果ビュー(場所が必要)が読み込まれる前に、1つのビューで場所の更新を開始しています。ユーザーが高速にタップすると、0.0座標が得られます。

適切なタイミングを得るにはstartUpdatingLocation、結果ビューの前に3つのビューを呼び出す必要があります。ここでの問題は、この3つのビューコントローラーを介して値を渡さなければならないことです。

次のことは、別のビュー(上記のビューではない)でも場所が必要なことです。独自のロケーションリスナークラスを作成しようと思いました。しかし、このクラスはいつインスタンス化され、座標(経度、緯度)が通過するのでしょうか。ロケーションリスナーを作成したクラスのみが結果を返すため、プロトコルは役に立ちません。

私は少し読んで、次の可能な解決策を思いつきます:

1)通知センターの使用(このソリューションを参照)

2)ロケーションマネージャーのプロパティをAppDelegate

1)で、結果を必要とするビューが以前に作成されなかったという問題が発生します。

2)の実装はどのようになりますか?アプリデリゲートでロケーションマネージャーのインスタンスを作成してから、緯度/経度などのいくつかのivarにアクセスしAppDelegateます。ここで説明するソリューションを採用する場合は、CLLocationManagerDelegate毎回実装する必要があります。それを行うためのクラスが1つある方が良いのではないでしょうか。

おそらくあなたは3番目の解決策を持っていますか?

4

1 に答える 1

1

3番目の解決策は、場所の緯度と経度をCLLocationCoordinate2Dに格納するシングルトンクラスを使用することです。次に、次のコードを使用して、プロジェクトの任意のビューから保存された座標にアクセスできます。

DataController* dataController = [DataController sharedDataController];
CLLocationCoordinate2D currentLocationCoordinate = dataController.coordinate;
于 2010-10-11T15:36:47.880 に答える