ios - 从 UIViewController 切换到 navigationController 内的其他 ViewController

标签 ios swift uiviewcontroller

我有以下看法:

TabBarController 包括(MapViewController, NavigationController) Navigation Controller 包括需要切换到的 DetailViewControllerMapViewController 中使用了以下代码。

现在我的代码:

    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 Storyboard

最佳答案

因此,从您的 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/

相关文章:

ios - 是否可以在 Swift 3 中没有自动布局的情况下降低键盘的高度?

swift - UIView 总是落后于 UITableView

ios - 如何在 ios swift 中以编程方式将 Storyboard View Controller 加载到标签栏 Controller 中?

ios - 如何隐藏导航 Controller 堆栈中单个 View Controller 的选项卡栏

ios - 使用 API 时后台/主线程出错

ios - 呈现弹出 View 时,如何让用户选择父 Collection View 中的单元格?

ios - 单击后退按钮时如何传递数据?

swift - 为什么以下代码在 iPhone 5 而不是 iPhone 5S 上崩溃?

ios - Phonegap 屏幕在 Retina iPad 模拟器上被切断

ios - 在后台播放的音频在 iOS 模拟器中不起作用