viewControllerが表示されたときにユーザーの座標を取得しようとしています。私はいくつかのviewControllerで場所が必要なので、私はappDelegateにlocationManagerを配置します。私の問題は、最初のviewDidAppearでは座標がまだ見つかりませんでした。これを変更するにはどうすればいいですか?皆さん、ありがとうございました!!!appDelegateのlocationManagerからviewControllerに座標を渡します。
- (NSString *)getUserCoordinates
{
NSString *userCoordinates = [NSString stringWithFormat:@"latitude: %f longitude: %f",
locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
return userCoordinates;
}
私のViewControllerはこれで座標を取得します:
私AppDelegateはこの持ち
私ViewControllersがすべて持っているので、私は最近、AppDelegateで同じこと、ロケーションマネージャを実装しました- (void)viewDidAppear
{
NSString *userCoordinates =[(PDCAppDelegate *)[UIApplication sharedApplication].delegate
getUserCoordinates];
}
素晴らしい作品です!ありがとうございました。 ただし、通知が既に送信された後にリッスンビューが読み込まれるため、ユーザーの初期位置が失われます。 AppDelegateに変数を追加して、すべてのビューがアクセスできる場所を維持しました。 – thedp
@thedpどうやってやったの?その変数がすべてのビューからアクセス可能であるという例を表示できますか? –
@UtkuDalmaz私は、AppDelegateと、この 'appDelegateInst =(AppDelegate *)[[UIApplication sharedApplication] delegate];'を使う他のビューコントローラから 'CLLocation'変数を配置しました。これで、グローバル変数のようなすべてのappDelegate変数にアクセスできます。 – thedp