1

我对 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;
}

我该如何解决?任何帮助表示赞赏。谢谢

4

2 回答 2

2

每次locationManager:didUpdateLocations:调用您的方法时,它都会创建一个新的 DriveTrapViewController,并在方法完成后立即销毁。也许您应该为此使用 ivar。这样它就不会每次都被创建和销毁。

此外,两个对象似乎都在创建另一个对象。这是一个一般的架构类型问题,而不是核心位置问题。

我建议在这个阶段你应该CLLocationManager在 DriveTrapController 中有一个变量,而不是试图将它分解成它自己的控制器。

于 2013-08-30T21:40:29.493 回答
0

试试CLController.locMgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;。这应该包括一些关于用户位置、速度、方位等的额外信息......

于 2013-08-30T21:15:05.940 回答