2013-01-06 104 views
0

我的應用程序獲取用戶在appDelegate中的位置並在某些viewControllers的viewDidAppear方法中調用該位置。我的問題是,第一次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]; 
} 

人對如何解決任何想法?非常感謝!

回答

0

不知道爲什麼你張貼同樣的問題兩次......但看到我的回答你的其他職位,

Pass Coordinates from locationManager in appDelegate to viewController

總之,你需要實現CoreLocation的委託方法,因爲這些方法在找到新位置時調用。在這些委託方法中,引發NSNotification(ViewControllers)訂閱以獲取新用戶的位置。

1

嘗試在這裏使用全局變量。它會隨着您的位置更新而更新,並且您將始終更新位置座標。

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