我正在尝试从我的代码连接到GPS。我是根据to this tutorial这样做的。
- (void)viewDidLoad {
[super viewDidLoad];
CLController = [[CoreLocationController alloc] init];
CLController.delegate = self;
[CLController.locMgr startUpdatingLocation];
}
- (void)locationUpdate:(CLLocation *)location {
locLabel.text = [location description];
}
- (void)locationError:(NSError *)error {
locLabel.text = [error description];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
上面的代码放在名为GetMyLocationViewController
的视图控制器中,我有另一个名为MainScreenViewController
的视图控制器。
当屏幕加载时,MainScreenViewController
会被加载,我需要GPS位置才能继续使用此屏幕进行操作。
在ViewDidLoad
的{{1}}方法中,我写了以下内容;
MainScreenViewController
执行上述代码后,- (void)viewDidLoad {
[super viewDidLoad];
GetMyLocationViewController *getMyLocationViewController = [[GetMyLocationViewController alloc]initwithXib:nil bundle:nil];
[self.navigationController pushViewController:getMyLocationViewController Animation:YES];
// AND THEN I NEED TO ACCESS THE LONGITUDE AND LATITUDE VALUES
}
viewDidLoad
方法将被执行,而MainScreenViewController
方法则无法执行。我可以获得locationUpdate
和longitude
值的唯一方法是执行latitude
方法。那么我怎样才能获得这些价值呢?
答案 0 :(得分:0)
您是否在设备中进行了测试?版本4.2之前的xcode没有GPS模拟器,因为方法位置Update永远不会调用。
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { // Check if the class assigning itself as the delegate conforms to our protocol. If not, the message will go nowhere. Not good.
[self.delegate locationUpdate:newLocation];
}
}
答案 1 :(得分:0)
您确定要加载GetMyLocationViewController
吗?您的代码仅显示加载MainScreenViewController
,-viewDidLoad
在其MainScreenViewControllers
方法中再次加载自身,这将导致无限循环的加载和推送-(void)viewDidLoad {
[super viewDidLoad];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startUpdatingLocation];
}
。
更新:教程中的CoreLocationController类似乎没必要。而是使用它,使CLLocationManager成为GetMyLocationViewController的属性。使GetMyLocationViewController的-viewDidLoad方法如下所示:
{{1}}
不要忘记导入CoreLocation库并实现委托方法。