打开一个不是根视图的视图,并保留根视图中的 tabbarcontroller (swift)

Open a View that is not the root one and keep the tabbarcontroller from the root view (swift)

大家好,我有一个应用程序,其视图组织如下图所示:

观看次数:

当用户打开附件时,我的应用程序必须打开视图 B(从图片中看)(我有另一个问题 我已经找到了这个问题的答案)。我已经这样做了,我的问题是当我打开视图 B 时,标签栏不存在。

有没有一种方法可以让我在打开视图 B 时看到作为根视图一部分的标签栏??

更新: 这是我用来从 AppDelegate.swift 文件:

打开视图的代码
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("AddComment") as! AddCommentViewController
    window?.rootViewController = vc 
}

刚刚看到您的更新 post。为了使其工作,必须满足以下条件:

  1. window?.rootViewController 是一个 UITabBarController
  2. 标签栏中 indexOfNavigationViewControllerInTabBar 处的视图控制器是 UINavigationViewController。

如果是,则执行:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    let indexOfNavigationViewControllerInTabBar = 0 // Set yourself
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("AddComment") as! AddCommentViewController
    let tabBarController = window?.rootViewController as! UITabBarController
    let navigationController = tabBarController.viewControllers![indexOfNavigationViewControllerInTabBar] as! UINavigationController
    navigationController.setViewControllers([vc], animated: true)
    tabBarController.selectedIndex = indexOfNavigationViewControllerInTabBar
}