我试图从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);
}