从viewController的viewDidAppear方法调用位置

时间:2013-01-06 03:12:52

标签: iphone ios locationmanager

我的应用程序获取用户在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];
}

任何人对如何修复都有任何想法?非常感谢!

2 个答案:

答案 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)订阅以获取新用户的位置。