我的应用程序获取用户在appDelegate中的位置,并在某些viewControllers的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];
}
任何人对如何修复都有任何想法?非常感谢!
答案 0 :(得分:1)
尝试在此处使用全局变量。它会随着您的位置更新而更新,您将随时更新位置。
-(void)didUpdateLocation // location update method of CLLocation Manager class
{
// assign current ordinates values to global variables.
}
答案 1 :(得分:0)
不确定为什么你两次发布同样的问题......但是在你的另一篇文章中看到我的答案,
Pass Coordinates from locationManager in appDelegate to viewController
简而言之,您需要实现CoreLocation的委托方法,因为在找到新位置时会调用这些方法。在这些委托方法中,触发NSNotification(ViewControllers)订阅以获取新用户的位置。