我有以下观点:
TabBarController
包括(MapViewController
,NavigationController
)
导航控制器包括切换到所需的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
答案 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,所以你可能需要对一些选项进行排序/解包 - 但我希望你能得到主旨。