2012-10-24 51 views
14

enter image description hereSegue公司控制器之間的兩個視圖

在我的故事板,我有一個的ViewController其保持的MKMapView與註釋。這些註釋擁有一個公開圖標,當點擊時,應該將用戶導航到另一個ViewController。爲此,我在視圖控制器之間創建了一個push segue。然後我給它一個'showDetail'的標識符並實現了下面的代碼。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    [self performSegueWithIdentifier:@"showDetail" sender:self]; 
} 

但是我得到以下錯誤。

Could not find a navigation controller for segue 'showDetail'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.' 

我哪裏錯了?我試圖將我的源UIViewController更改爲UINavigationController,但該視圖僅顯示爲黑屏。

+0

你可以用兩個ViewController發佈故事板的截圖嗎? – Mariusz

+0

@Mariusz問題更新!謝謝。 – Jonathan

+0

嘗試將您的目標ViewController嵌入到NavigationController中,並將您的Segue從MapViewController拖到NavigationController。 – Mariusz

回答

38

實際上,您必須將UIViewController設置爲UINavigationController的根控制器(或從具有navcontroller的視圖控制器中推送)。要做到這一點

  • 將一個新的導航控制器到你的故事板 - 它將被 默認連接到的tableview控制器
  • 刪除的tableview控制器右擊navgiation 控制器上,並連接「根查看控制器」屬性,你 現有視圖控制器
  • 從您的視圖控制器移動切入點箭頭根 視圖控制器
+0

它的工作原理!謝謝。爲了檢查我是否正確,我現在有一個TabBarController和一個UINavigationController。是否沒有可以同時處理的控制器? – Jonathan

+0

結帳本文檔:http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html#//apple_ref/doc/uid/TP40011313-CH6-SW1步驟是標題爲 「使用故事板創建對象」。 –

+0

它非常有用! – Pierry

41

最簡單的方式做,這是選擇你想成爲你的導航層次的根視圖控制器,並選擇

Editor > Embed In > Navigation Controller 

這將創建新的導航控制器,鉤住了一切爲你。

0

檢查步驟: 1.點擊兩個視圖控制器之間的連接。 2.點擊屬性檢查器 3.設置標識符爲「showDetail」。 4.保存並運行。

相關問題