从UIViewController切换到navigationController内的其他ViewController

时间:2014-11-06 23:52:26

标签: ios swift uiviewcontroller

我有以下观点:

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

1 个答案:

答案 0 :(得分: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

我还在学习Swift,所以你可能需要对一些选项进行排序/解包 - 但我希望你能得到主旨。