0

私のアプリケーションは、appDelegate でユーザーの位置を取得し、一部の viewController の viewDidAppear メソッドでその位置を呼び出します。私の問題は、viewController の初回の読み込み時に、ユーザーの位置を取得するのに十分な時間がなかったことです。

これが私のAppDelegateです:

- (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;
}

- (NSString *)getUserLatitude
{
NSString *userLatitude = [NSString stringWithFormat:@"%f", 
locationManager.location.coordinate.latitude];
return userLatitude;
}

- (NSString *)getUserLongitude
{
NSString *userLongitude = [NSString stringWithFormat:@"%f", 
locationManager.location.coordinate.longitude];
return userLongitude;
}

ビューコントローラーから場所を呼び出すために使用しているものは次のとおりです。

- (void) viewDidAppear:(BOOL)animated
{
NSString *userLatitude =[(PDCAppDelegate *)[UIApplication sharedApplication].delegate 
getUserLatitude];

NSString *userLongitude =[(PDCAppDelegate *)[UIApplication sharedApplication].delegate 
getUserLongitude];
}

誰でも修正方法について何か考えがありますか? 本当にありがとう!

4

2 に答える 2

1

ここでグローバル変数を使用してみてください。場所が更新されると更新され、場所の座標も常に更新されます。

-(void)didUpdateLocation // location update method of CLLocation Manager class
{
// assign current ordinates values to global variables.
}
于 2013-01-06T07:29:22.167 に答える
0

Not sure why you posted the same question two times... but see my answer at your other post,

Pass Coordinates from locationManager in appDelegate to viewController

In short, you need to implement the delegate methods of CoreLocation, as those methods are called when a new location is found. In those delegate methods, fire off an NSNotification (which ViewControllers) subscribe to in order to get the new user's location.

于 2013-01-06T07:22:08.137 に答える