0

탭 막대 응용 프로그램이 있고 해당 탭 중 하나에지도보기가 있습니다. 나는 새보기를 푸시 할 때 내비게이션 컨트롤러가 null입니다.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 

childController = [[AnnotationDetailView alloc] initWithNibName:@"AnnotationDetailView" bundle:nil];  

[self.navigationController pushViewController:childController animated:YES]; 

} 

그러나 나는있는 navigationController을 nslog 경우가 null ...이 코드를 사용하여지도보기에서 주석에 공시 버튼을 클릭에서 새보기를 밀어 노력하고 있어요.

다른 탭에서 위의 코드를 사용하여보기를 밀어 넣을 테이블보기가 있다는 것이 혼란 스럽습니다. 왜 작동하지만지도 주석은 그렇지 않습니다.

+0

'nslog navigationController' 어디에서? –

+0

보기를 시도한 후 – ChrisM

답변

0

간단한 대답은 테이블 뷰 탐색 컨트롤러 내부와지도보기가되지 않는 것입니다. 탭 뷰 컨트롤러는 실제로는 내비게이션 컨트롤러 자체가 아닙니다.

프로젝트에 따라 XIB를 편집하는 것처럼 맵 컨트롤러의 하위 노드가 맵 컨트롤러의 바로 아래에 있으며지도보기 컨트롤러가 해당 탐색 컨트롤러의 자식이되도록 간단하게 수정할 수 있습니다. 테이블 뷰가 정의 된 방식을 살펴보면 다른 점을 볼 수 있어야합니다.

+0

나는이 게임을 처음 접했지만, 배우려고 노력하고있다. 아직 확실하지는 않지만 좀 더 읽어야 할 것 같습니다. – ChrisM

+0

나는 인터페이스 빌더에서 모든 것을 설정 했으므로. 어떻게 tableview가 정의되어 있는지 살펴 보라. 그 클래스가 준수하는 클래스를 의미합니까? – ChrisM

+0

불행히도, 상황에 도달 할 수있는 12 가지 방법이 있으므로 유용한 세부 정보를 제공하기가 어렵습니다. 궁극적으로, 당신의 tableview가 탭 컨트롤러에 "추가"되는 어딘가가 있습니다. 어디서든 자세히 살펴 본다면 탐색 컨트롤러가 실제로 탭 컨트롤러에 추가되고 tableviewcontroller가 해당 nav 컨트롤러에 추가되는 것을 볼 수 있습니다. 가장 간단한 예에서는 MainWindow.xib의 문서 윈도우에서이 계층 구조를 볼 수 있으며지도보기에 맞게이 계층을 모방 할 수 있습니다. 그러나 당신의 상황이 더 복잡 할 수 있습니다. – adpalumbo

0

childControllerAnnotationDetailView * childController;으로 정의 했습니까?

은 또는 당신은 간단하게 사용할 수 있습니다

AnnotationDetailView * childController = [[AnnotationDetailView alloc] initWithNibName:@"AnnotationDetailView" bundle:nil]; 
+0

그래, 깜빡 했어. – ChrisM

관련 문제