我有多个故事板。如何使用 AppDelegate 在另一个故事板中打开另一个 ViewController? (继续)

I have multiple storyboards. How can I use AppDelegate to open another ViewController in another storyboard? (Segue)

这是我的代码。我尝试了几种不同的方法,其中一些方法给出了视图不在层次结构中的错误。

下面的代码片段在正确的 else 中,但不能执行 segue 或 presentViewController

func applicationDidTimout(notification: NSNotification) {
    if let vc = self.window?.rootViewController as? UINavigationController {
        if let myTableViewController = vc.visibleViewController as? AccountsOverviewViewController {
            // Call a function defined in your view controller.
            myTableViewController.signOffUser()
        } else {
            // We are not on the main view controller. Here, you could segue to the desired class. 
            let storyboard = UIStoryboard(name: "Accounts", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("AccountsNavigationController") as UIViewController
            let vc2 = getVisibleViewController(nil)
            vc2?.presentViewController(vc, animated: true, completion: nil)

        }
    }
}

func getVisibleViewController(var rootViewController: UIViewController?) -> UIViewController? {

    if rootViewController == nil {
        rootViewController = UIApplication.sharedApplication().keyWindow?.rootViewController
    }

    if rootViewController?.presentedViewController == nil {
        return rootViewController
    }

    if let presented = rootViewController?.presentedViewController {
        if presented.isKindOfClass(UINavigationController) {
            let navigationController = presented as! UINavigationController
            return navigationController.viewControllers.last!
        }

        if presented.isKindOfClass(UITabBarController) {
            let tabBarController = presented as! UITabBarController
            return tabBarController.selectedViewController!
        }

        return getVisibleViewController(presented)
    }
    return nil
}

使用下面的函数获取可见视图控制器,

func getVisibleVC() -> UIViewController? {
  if var visibleVC = window?.rootViewController {
    while let presentedVC = visibleVC.presentedViewController {
      visibleVC = presentedVC
    }
    return visibleVC
  }
  return nil
}