2013-08-30 2 views
1

저는 iOS 코딩을 처음 접했습니다. CLLocation 문제를 해결하려면 도움이 필요합니다.CLLocation 속도가 UIView에 표시되지 않습니다.

위치 및 속도 정보를 검색하기 위해 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; 
} 

어떻게 수정합니까? 어떤 도움을 주셔서 감사합니다. 감사합니다

답변

2

locationManager:didUpdateLocations: 메서드가 호출 될 때마다 메소드가 완료 되 자마자 파괴되는 새로운 DriveTrapViewController가 생성됩니다. 어쩌면이 대신에 아이어를 사용해야합니다. 그렇게하면 매번 생성되고 파괴되지 않습니다.

또한 두 개체가 모두 다른 개체를 만들고있는 것처럼 보입니다. 핵심 위치 문제 대신에 일반적인 아키텍처 유형 문제입니다.

나는이 단계에서 자신의 컨트롤러로 분해하려고 시도하지 않고 DriveTrapController 내에서 CLLocationManager 변수 만 가져야한다고 제안합니다.

+0

감사합니다. 그것으로 문제가 해결되었습니다. DriveTrapController 안에 CLLocationManager를 추가했습니다. – user2734323

+0

그러나 하나의 ViewController에서 CLLocationManager를 사용하고 다른 ViewController에 위치 정보를 전달해야한다면 내 옵션은 무엇입니까? ivar를 사용하지 않고도 달성 할 수 있습니까? – user2734323

+0

그것은 당신이하려는 일에 달려 있습니다. 다른 vc의 속성을 사용하여 위치를 전달하거나 다른 위치 관리자를 다른 vc로 지정할 수 있습니다. 좀 더 자세한 내용으로 다른 질문을하는 것이 좋습니다. –

0

시도해보십시오 CLController.locMgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;. 여기에는 사용자 위치, 속도, 베어링 등에 대한 추가 정보가 포함되어야합니다.

관련 문제