我有以下看法:
TabBarController
包括(MapViewController
, NavigationController
)
Navigation Controller 包括需要切换到的 DetailViewController
。
MapViewController
中使用了以下代码。
现在我的代码:
let eventDetailViewController : EventDetailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("EventDetail") as EventDetailViewController
eventDetailViewController.event = event
self.showViewController(eventDetailViewController, sender: self)
这行得通,但导航 Controller 无法洞察(例如,我无法转到 firstviewcontroller
)。
如何通过导航 Controller 触发此代码?
下面是 Storyboard的屏幕截图。从左到右:TabbarController -> NavigationController 和 MapController。导航 Controller -> 事件 Controller 。最右边的 View 是 EventDetailView
最佳答案
因此,从您的 MapView 中,self.tabBarController
将指向 tabBarController。从您的 Storyboard 来看,导航 Controller 似乎是第一个选项卡,因此将位于 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,因此您可能需要整理一些可选值/展开 - 但我希望您能理解要点。
关于ios - 从 UIViewController 切换到 navigationController 内的其他 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791658/