2012-10-07 4 views
0

나는 며칠이 아니라면 몇 시간 동안 나를 지켜 준 무언가에 심각하게 고심하고있다. 누군가가 의견을 제시 할 수 있다면 정말 좋을 것입니다. 버튼을 누르는 것에서 다른 뷰로 데이터를 전달하는 방법을 알아 냈습니다.하지만 지금하려고하는 것은 경도와 위도 좌표를 NSString으로 다음 뷰로 보내는 것입니다. 그 NSString 수 있습니까?단추 위의 위도와 경도 좌표를 모두 전달하면 다음지도보기 (세보기 사이)에 핀을 눌렀다 놓을 수 있습니까?

나는 CLLocationCoordinate2D를 '위치'와 이미 연관 시켰기 때문에 현재 작동하지 않는다는 것을 깨닫는다. 그러나 지금은 그 밖에 무엇을 할 수 있을까? 여기

내 코드입니다 :이 속성을 처리하거나 이동하는 사용자 정의 메소드를 만들 수 있습니다

@property (nonatomic) double latitude; 
@property (nonatomic) double longitude; 

그리고 내 응용 프로그램에서

if ([mlabel.text isEqualToString: @" Arts "]) 

    { 
     CLLocationCoordinate2D location; 
     location.latitude = (double) 44.4758; 
     location.longitude = (double) -73.2125; 

     viewController.stringToDisplay = location; 

    } 
+1

좌표 만 전달하면 어떨까요? – jrturton

답변

1

이 게시물을 게시 한 후 총 3 개의 추가보기를 구현 했으므로 초기 질문이 다릅니다. 지금부터 내 초기보기에는 Arts라는 카테고리가 있습니다. 다음과 같이 예술보기에 도달했습니다.

예를 들어 나의 첫 번째보기는 아래에서 "예술"보기를 여는 데 사용됩니다. 위의 코드가에서 어떤 일이 일어나고 무엇

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    FlipsideViewController *viewController = segue.destinationViewController; 
    viewController.delegate = self; 

    NSString *str; 

    if ([[segue identifier] isEqualToString:@"showAlternate"]) 
    { 
     [[segue destinationViewController] setDelegate:self]; 
    } 

    if ([mlabel.text isEqualToString: @" Burlington City Arts "])  
    { 
     CLLocationCoordinate2D location; 
     location.latitude = (double) 44.476625; 
     location.longitude = (double) -73.212827; 

     str = [NSString stringWithFormat:@"%.2f, %.2f", location.latitude, location.longitude]; 

     viewController.stringToDisplay = str; 
    } 
} 

: 내 예술보기에서 한 번

-(void)mainButton 
{ 
    if ([mlabel.text isEqualToString: @" Arts " ]) 
    { 
    [self performSegueWithIdentifier:@"Arts" sender:self]; 
    } 
} 

, I는 다음과 같이 세 번째보기 (지도)에 드롭 내 예술 장소 내 좌표를 stringToDisplay를 선언하여 좌표를 저장하고 세 번째보기로 보냅니다. 나는 레이블을 사용하고 pickerview의 레이블이 "Burlington City Arts"와 같은 경우 해당 특정 위치의 좌표를 내 "str"NSString을 통해 세 번째 뷰로 보냅니다.

if ([self.stringToDisplay isEqualToString: @"44.48, -73.21"]) 

{ 
    location.latitude = (double) 44.476625; 
    location.longitude = (double) -73.212827; 

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"newAnnotation" andCoordinate:location]; 
    [self.mapView addAnnotation:newAnnotation]; 
    [mapView setCenterCoordinate:location animated:YES]; 
} 

내 stringToDisplay 위의지도보기에 좌표 (세 번째보기)와 STR에있는 NSString를 전송 :

마지막으로, 그 장소에 대한 세 번째 뷰의 코드가 난에 핀을 드롭 할 코드에서 값은 반올림되었으므로 내가 한 것은 둥근 숫자를 가져 와서 내 IF 문에 넣었습니다. 그 후, 핀을 놓을 정확한 좌표를 다시 지정했습니다. 따 - ​​다!

*****UPDATE***** 

오히려보기 2 및도 3에 좌표를 되풀이보다는 I 최선 단지 각 장소의 레이블을 다시 선언하고 더 counfusion가 없기 때문에 제 뷰 라벨 명을 전달하는 것으로 지금 실현 좌표와 함께. 이러한 좌표는 세 번째 맵보기에서 한 번만 지정됩니다. 내 stringToDisplay 문자열에 다음과 같이 레이블 이름을 전달합니다.

if ([mlabel.text isEqualToString: @" The S.P.A.C.E. Gallery "]) 
     { 
      viewController.stringToDisplay = @" The S.P.A.C.E. Gallery "; 

     } 
1

, 나는지도보기가있는의 UIViewController의 속성을 선언 귀하의 위치로 매핑하십시오. 또는 str이 NSString 인 경우 [str doubleValue]를 전달하여 NSString을 double로 변환 할 수 있습니다.

+0

고마워요 Andrey. @Jrturton : 어떻게 그냥 좌표를 전달에 대해 갈까요? 그게 내가하고 싶은 모든 것입니다. (여기서 가장 간단한 방법을 택하십시오.) '코디네이트'자체가 효과가 없을 것입니다. CLLocationCoordinate2D 값을 반환하려고하면 '위치'에 할당되어 작동하지 않습니다. 내가 신참이라고 말할 수 있듯이 :) – Greg