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

这是我用来从 viewControllers 调用位置的方法:

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

不知道你为什么两次发布相同的问题......但请参阅我在您的另一篇文章中的回答,

将 appDelegate 中 locationManager 的坐标传递给 viewController

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

于 2013-01-06T07:22:08.137 回答