我试图从AppDelegate展示/推送嵌入在NavController中的VC。我以前使用过此代码,但由于某种原因它不再起作用:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let VC = storyboard.instantiateViewControllerWithIdentifier("PendingRequest") as! PendingRequestVC
    let navController = UINavigationController.self(rootViewController: VC)

    let rootViewController = UIApplication.sharedApplication().keyWindow!.rootViewController
    rootViewController!.presentViewController(navController, animated: false, completion: nil)


其他代码可以打开我想要的VC,但不能在导航窗格中打开。任何指导将不胜感激。

用户与推送通知交互后,从AppDelegate调用。

编辑:
我可以使用以下代码来呈现正确的VC:

    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    if let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("PendingNavController") as? UINavigationController {
        if let yourViewController = viewController.topViewController as? PendingRequestVC {
            //yourViewController.getRequestdata()
        }
        UIApplication.sharedApplication().keyWindow!.rootViewController = viewController;
    }


但是此代码不允许我使用NavBar上的“关闭”按钮返回。
我的结构如下:

TabController-> NavController1-> VC1-> NavController1a-> VC1a
我正在尝试使用VC1a,并且能够使用“关闭”按钮返回VC1

最佳答案

在显示的ViewController的View中添加一个UIButton。接下来的事件将由该按钮执行。您可以通过这种方式关闭导航控制器

@IBAction func dismissViewController(sender: AnyObject) {

    self.navigationController.dismissViewControllerAnimated(false, completion:nil);

}

10-07 21:39