2014-11-06 62 views
0

我有以下觀點:切換到其他的ViewController這是內部navigationController

TabBarController包括(MapViewControllerNavigationController) 導航控制器包括被切換到所需要的DetailViewController。 以下代碼用於MapViewController

現在我的代碼:

let eventDetailViewController : EventDetailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("EventDetail") as EventDetailViewController 
    eventDetailViewController.event = event 
    self.showViewController(eventDetailViewController, sender: self) 

這工作,但導航控制器沒有在那裏的洞察力(我不能去firstviewcontroller爲例)。

如何通過導航控制器觸發此代碼?

下面是故事板的截圖。從左到右:TabbarController - > NavigationController和MapController。 NavigationController - > EventController。最直觀的觀點是EventDetailView Storyboard

+0

EventDetailViewController是導航控制器的根視圖控制器嗎? – rdelmar 2014-11-07 00:25:34

+0

你能澄清1)什麼是導航控制器的rootViewController? 2)'firstViewController'在哪裏出現? 3)究竟在哪裏/你想如何顯示eventDetailViewController?你是否想將它「推」到tabBarController的單獨選項卡中的導航控制器上?或者在模型上顯示(在導航控制器中)在MapView的頂部? – pbasdf 2014-11-07 00:26:43

+0

解釋這個問題讓我感到頭痛。從Navigationcontroller開始:NavigationController的rootViewController稱爲EventController。事件控制器有一個tableview,它在單元格上單擊時顯示detailviewcontroller。我希望將視圖推到導航控制器上。對不起,我很困惑。 – Kraishan 2014-11-07 00:29:51

回答

1

所以,從你的MapView中,self.tabBarController會指向tabBarController。它從你的故事板看起來像導航控制器是第一個選項卡,所以將在tabBarController的viewControllers屬性的索引0處。所以,你應該能夠做到以下幾點:

let eventDetailViewController : EventDetailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("EventDetail") as EventDetailViewController 
eventDetailViewController.event = event 
let navController : UINavigationController = self.tabBarController.viewControllers[0] as UINavigationController 
navController.pushViewController(eventDetailViewController, animated:YES) 
self.tabBarController.selectedIndex = 0 

我還在學習斯威夫特,所以你可能有一些自選整理/展開了 - 但我希望你得到的要點。

+0

感謝您的回覆。這解決了我的問題。有時我需要添加一個?但除此之外;這工作! – Kraishan 2014-11-07 13:54:16

+0

發生在我們所有人身上。 – pbasdf 2014-11-07 13:59:02

相關問題