我对iOS编码很新。我需要一些帮助来解决CLLocation的问题。
我使用didUpdateLocations来检索位置和速度信息。我可以使用NSLog获取这些详细信息和显示。
但是,我无法在UIview上显示它。我该如何解决?
以下是我的代码。
我使用CoreLocationController来检索我的位置详细信息。
@implementation CoreLocationController
@synthesize locMgr;
@synthesize location;
- (id)init {
self = [super init];
if(self != nil) {
self.locMgr = [[CLLocationManager alloc] init];
self.locMgr.delegate = self;
}
return self;
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
DriveTrapViewController *driveTrapViewController = [[DriveTrapViewController alloc]init];
self.location = [locations lastObject];
//NSLog(@"Speed, %f", self.location.speed);
[driveTrapViewController locationUpdate:(CLLocation *)self.location];
}
我将检索到的详细信息发送回DriveTrapViewController。我可以使用NSLog显示它们。但是self.speedText.text始终为NULL,并且屏幕上没有显示任何内容。
@implementation DriveTrapViewController
@synthesize CLController;
@synthesize speedText = _speedText;
- (void)viewDidLoad {
[super viewDidLoad];
CLController = [[CoreLocationController alloc] init];
CLController.delegate = self;
[CLController.locMgr startUpdatingLocation];
}
- (void)locationUpdate:(CLLocation *)location
{
NSString *speed = [NSString stringWithFormat:@"SPEED: %f", location.speed];
NSLog(@"Speed %@",speed);
self.speedText.text = speed;
}
我该如何解决这个问题?任何帮助表示赞赏。感谢
答案 0 :(得分:2)
每次调用locationManager:didUpdateLocations:
方法时,它都会创建一个新的DriveTrapViewController,一旦方法完成就会被销毁。也许你应该使用ivar代替它。这样每次都不会创建和销毁它。
此外,两个对象似乎都在制作另一个对象的实例。而不是核心位置问题,这是一般的架构类型问题。
我建议在这个阶段你应该在你的DriveTrapController中有一个CLLocationManager
变量,而不是试图把它分解成它自己的控制器。
答案 1 :(得分:0)
试试CLController.locMgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
。这应该包括一些关于用户位置,速度,方位等的额外信息......