0

我有一個標籤欄應用程序,並在其中一個標籤中有一個地圖視圖。我試圖從點擊使用該代碼的地圖視圖的註解披露按鈕推一個新的觀點...當推新視圖時,導航控制器爲空

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

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

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

} 

但是如果我的NSLog的navigationController爲null。

令人困惑的是,在另一個選項卡中,我有一個表視圖,它將使用上述代碼推送視圖。爲什麼這個工作,但一個地圖註釋不。

+0

你'nslog navigationController'從哪裏? –

+0

當我嘗試並推動視圖 – ChrisM

回答

0

簡單的答案是,你的表視圖導航控制器內部和地圖視圖是沒有的。標籤視圖控制器實際上並不是導航控制器本身。

根據您的項目,修復可能與編輯XIB一樣簡單,因此導航控制器是地圖標籤的標籤控制器的直接子項,而地圖視圖控制器是該導航控制器的子項。看看你的表格視圖是如何定義的,你應該能夠看到有什麼不同。

+0

我是這個遊戲的新手,但試圖學習。仍然不太確定,我想我需要再讀一點。 – ChrisM

+0

因爲我已經在界面生成器中設置了所有東西。你怎麼看待tableview是如何定義的。你的意思是它符合什麼類? – ChrisM

+0

不幸的是,很難給你提供有用的細節,因爲有十幾種方法可以達到你的情況。最終,有一個地方你的tableview被「添加」到選項卡控制器。如果仔細觀察,無論在哪裏,都會看到導航控制器實際上已添加到選項卡控制器,並且tableviewcontroller正在添加到該導航控制器。在最簡單的例子中,您可以在MainWindow.xib的文檔窗口中看到此層次結構,並且可以爲您的地圖視圖模擬它。但是你的情況可能會涉及更多。 – adpalumbo

0

您是否在頭文件中定義了childControllerAnnotationDetailView * childController;

,或者你可以簡單地使用:

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

是的,我忘了提及 – ChrisM

相關問題