在呈现模态时,“不鼓励在分离的视图控制器上呈现视图控制器”消息

我有一个导航控制器和根视图。 然后在那个根视图中,我推了一个视图,我必须点击以观察内容,如果login,如果没有logging它,它会打开一个模式视图控制器与下面的代码。

var vc = self.storyboard?.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController self.tabBarController!.presentViewController(vc, animated: true, completion: nil) 

在viewdidload()我有一个nsnotification,以便我可以得到通知时,从login模式用户loggedinback

  NSNotificationCenter.defaultCenter().addObserver(self, selector: ("didDismissSecondViewController:"), name: "SecondViewControllerDismissed", object: nil) 

在所有的工作之后,我在Login Controller中写下了下面的代码

  self.dismissViewControllerAnimated(true, completion: {NSNotificationCenter.defaultCenter().postNotificationName("SecondViewControllerDismissed", object: nil, userInfo: nil)}); 

所以在我的第一个视图控制器中,我写了下面的代码

 func didDismissSecondViewController(sender: AnyObject) { NSLog("Called ns notifications") dispatch_async(dispatch_get_main_queue(),{ let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) if Reachability.isConnectedToNetwork() == true { let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let vc : VideoPlayViewController = storyboard.instantiateViewControllerWithIdentifier("video") as! VideoPlayViewController vc.movieUrl = self.movieURL NSLog("URL:- \(self.movieURL)") let navigationController = UINavigationController(rootViewController: vc) self.presentViewController(navigationController, animated: true, completion: nil) } else { var alert = UIAlertView(title: "No Internet connection", message: "Please ensure you are connected to the Internet. Connect to internet and and choose any sorting option to reload.", delegate: self, cancelButtonTitle: "Cancel") alert.addButtonWithTitle("Ok") alert.show() } }) } 

但是,在试图在解除login控制器后显示视图控制器时,显示“呈现视图控制器在分离的视图控制器上不被鼓励”错误并崩溃。

感谢上帝,我find了答案!

 var viewCon:UIViewController = self.presentingViewController! self.dismissViewControllerAnimated(true, completion: {let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let vc : VideoPlayViewController = storyboard.instantiateViewControllerWithIdentifier("video") as! VideoPlayViewController vc.movieUrl = self.movieUrl let navigationController = UINavigationController(rootViewController: vc) viewCon.presentViewController(navigationController, animated: true, completion: nil)});