从AppDelegate呈现嵌入在NavController中的VC

时间:2016-02-14 09:16:48

标签: ios swift uiviewcontroller

我试图想要从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并能够使用Closed按钮返回VC1

1 个答案:

答案 0 :(得分:1)

在您呈现的ViewController视图中添加UIButton。以下事件将由该按钮执行。您可以通过这种方式关闭导航控制器

@IBAction func dismissViewController(sender: AnyObject) {

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

}