2014-08-28 7 views
0

며칠 전에 Xcode를 사용하기 시작했으며 완전히 잃어 버렸습니다. 실행중인 GPS 위치 확인 프로그램 앱을 찾으려고합니다. here입니다.Xcode의 콘솔에서 정보를 화면에 출력하는 방법은 무엇입니까?

기본적으로, 응용 프로그램은 NSLog를 사용하여 업데이트 된 GPS 정보를 인쇄합니다. 내 이해에 따르면 Xcode의 콘솔로 인쇄합니다. 그러나이 정보를 화면에 인쇄하고 싶습니다. 여기

성공적으로 화면에 출력 CFAStartViewController.m의 코드입니다 :

-(void)viewDidAppear:(BOOL)animated{ 
    CFAAppDelegate *appDelegate=(CFAAppDelegate *)[UIApplication sharedApplication].delegate; 
    CLLocation *currentLocation=appDelegate.locationManager.location; 
    self.labelLocationInformation.text=[NSString stringWithFormat:@"latitude: %+.6f\nlongitude: %+.6f\naccuracy: %f", 
     currentLocation.coordinate.latitude, 
     currentLocation.coordinate.longitude, 
     currentLocation.horizontalAccuracy]; 
} 

을 그리고 여기에 성공적으로 콘솔에 인쇄 CFAAppDelegate.m의 코드입니다 :

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ 
    NSDate* eventDate = newLocation.timestamp; 
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; 
    if (abs(howRecent) < 15.0) 
    { 
     //Location timestamp is within the last 15.0 seconds, let's use it! 
     if(newLocation.horizontalAccuracy<35.0){ 
      //Location seems pretty accurate, let's use it! 
      NSLog(@"latitude %+.6f, longitude %+.6f\n", 
       newLocation.coordinate.latitude, 
       newLocation.coordinate.longitude); 
      NSLog(@"Horizontal Accuracy:%f", newLocation.horizontalAccuracy); 
      //Optional: turn off location services once we've gotten a good location 
      //[manager stopUpdatingLocation]; 
     } 
    } 
} 

내가 변화 시도 NSLog에 대한 호출은 CFAStartViewController와 비슷한 형식으로 self.labelLocationInformation.text에 있지만, 아무 것도하지 않는 것 같습니다. Xcode의 기본 자습서를 읽었지만 전체적으로 무엇을 해야할지에 대한 지식이 부족합니다.

내가 할 수있는 최선의 방법은이 문제를 해결하는 데 도움이되는 링크를 게시하는 것입니다.

+0

"사용자"코드를 표시해야합니다. 위의 코드는 잘 보이므로 무엇을 하려는지 확실하지 않습니다. 두 코드 세그먼트 모두 정상적으로 작동한다고 설명합니다. 당신이하려고하는 것은 위에 제시된 코드와 다른 것입니까? NSLog로 보낼 데이터를 UILabel에 표시하려면 currentLocation.coordinate.latitude 등 대신 첫 번째 코드 블록에서 newLocation.coordinate.latitude 및 newLocation.coordinate.longitude를 사용해야합니다. – Wizkid

+0

출력을 iOS 시뮬레이터 화면으로 인쇄하지만 Xcode 콘솔에서 인쇄합니다. 코드 블록은 CFAAppDelegate.m과 CFAStartViewController.m의 두 개의 다른 파일에 있습니다. CFAAppDelegate.m에서 생성 된 값을 화면에 인쇄하고 싶지만 어떻게 계산할 수는 없습니다. –

답변

0

범위로 인해 문제가 발생한 것 같습니다. didUpdateToLocation: 메서드는 위치 관리자 대리인, 즉 범위에 레이블이없는 응용 프로그램 대리인에게 전송됩니다. 위치 관리자의 대리자를 CFAStartViewController으로 변경하고 연결된 위치 관리자 대리인 코드를 App Delegate에서 CFAStartViewController으로 옮겨보십시오. 그런 다음 didUpdateToLocation :이 호출되면 레이블이 범위에 있습니다.

0

내 의견에 대한 명확한 답변을 바탕으로 .... CFAAppDelegate의 데이터를 CFAStartViewController에 표시하려면 CFAStartViewController (또는 CFAStartViewController)에게 데이터를 보내야합니다. 그것을 보내려면 1) "CFAVC"와 같은 CFAStartViewController의 스토리 보드 ID를 제공하십시오. 2) CFAStartViewController의 속성을 정의하거나 노출하여 데이터를 포함합니다. 3) CFAAppDelegate 내에서 다음을 통해 CFAStartViewController를 인스턴스화합니다.

// in CFAStartViewController.h define property such as: 
@property (strong, nonatomic) CLLocation *incomingLocation; 

// in CFAAppDelegate.m 
// get a pointer to your VC 
     CFAStartViewController *destinationVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CFAVC"]; 

// set properties on VC 
destinationVC.incomingLocation = newLocation; 

// show CFAStartViewController (or use whatever method you are currently using) 
[self.navigationController pushViewController:destinationVC animated:YES];