두 개의보기가 있는데 첫 번째보기에는 ridesMap이라는 MKMapView가 있습니다. 두 번째 뷰는 UITableView가있는 뷰입니다. 두 번째보기에서 저장 버튼을 클릭하면 처음보기에서 메소드를 호출 :iPhone : 다른보기에서 호출 할 때 addAnnotation이 작동하지 않습니다.
// Get my first views class
MyRidesMapViewController *rideMapView = [[MyRidesMapViewController alloc] init];
// Call the method from my first views class that removes an annotation
[rideMapView addAnno:newRidePlacemark.coordinate withTitle:rideTitle.text withSubTitle:address];
이 제대로 호출처럼 보이는 addAnno 방법에있어서,
- (void)addAnno:(CLLocationCoordinate2D)anno withTitle:(NSString *)annoTitle withSubTitle:(NSString *)subTitle {
Annotation *ano = [[[Annotation alloc] init] autorelease];
ano.coordinate = anno;
ano.title = annoTitle;
ano.subtitle = subTitle;
if ([ano conformsToProtocol:@protocol(MKAnnotation)]) {
NSLog(@"YES IT DOES!!!");
}
[ridesMap addAnnotation:ano];
}//end addAnno
이 방법은 주석을 생성 MKAnnotation에 준거하고, addAnnotation 메소드를 사용해 맵에 그 주석을 추가한다고 생각합니다. 그러나 주석은 절대로 추가되지 않습니다.
주석을 추가하지 않을 때 오류가 발생하지 않습니다. 그러나 메서드가 호출 될 때 나타나지 않습니다.
왜 이렇게 될까요? 그것은 모든 것을 올바르게 수행 한 것, 그리고 올바른 MKAnnotation을 addAnnotation 메서드에 전달하고있는 것 같습니다. 그래서, 왜 핀을 떨어 뜨리지 않는지 모르겠다. 이 메서드를 다른 뷰에서 호출하기 때문에이 코드를 사용할 수 있습니까? 그게 왜 중요할까요?
내 앱은 탭 막대 컨트롤러를 사용합니다. 내지도보기의 경우 탭 중 하나입니다. 이 탭에는 모달보기를 보여주는 단추가 있는데, 내지도보기 위에 열립니다. 이 두 번째 뷰에서 스택의 맨 아래에있는 mapview로 주석과 주석을 제거하는 메서드를 호출해야합니다. –
지도보기 컨트롤러를 찾으려면 UITabViewController의 viewControllers 속성을 검색하여 선택하십시오. self.tabBarController.selectedViewController = mapViewController; –