Iphone 从viewController的ViewDidDisplay方法调用位置

Iphone 从viewController的ViewDidDisplay方法调用位置,iphone,ios,locationmanager,Iphone,Ios,Locationmanager,我的应用程序在appDelegate中获取用户的位置,并在某些ViewController的ViewDidDisplay方法中调用该位置。我的问题是,第一次加载viewController时,没有足够的时间获取用户的位置 这是我的AppDelegate: - (NSString *)getUserCoordinates { NSString *userCoordinates = [NSString stringWithFormat:@"latitude: %f longitude: %f",

我的应用程序在appDelegate中获取用户的位置,并在某些ViewController的ViewDidDisplay方法中调用该位置。我的问题是,第一次加载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];
}
以下是我从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;
}

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

有人对如何修复有什么想法吗?非常感谢

不知道你为什么两次发布同一个问题。。。但是在你的另一个帖子上看到我的答案


简言之,您需要实现CoreLocation的委托方法,因为在找到新位置时会调用这些方法。在这些委托方法中,触发一个NSNotification(ViewController订阅该通知),以获取新用户的位置。

尝试在此处使用全局变量。它将随着您的位置更新而更新,并且您将始终拥有更新的位置坐标

-(void)didUpdateLocation // location update method of CLLocation Manager class
{
// assign current ordinates values to global variables.
}