Swift以编程方式导航到另一个视图控制器/场景

我正在使用以下代码以编程方式导航到另一个ViewController。 它工作正常,但它如何隐藏navigation bar我该如何解决? (导航栏是通过在navigation controllerembeddedViewController来创build的(如果有的话)。)

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController self.presentViewController(nextViewController, animated:true, completion:nil) 

在Swift 3

如果要导航到以编程方式创build的Controller,请执行以下操作:

 let newViewController = NewViewController() self.navigationController?.pushViewController(newViewController, animated: true) 

如果你想导航到带有标识符“newViewController”的StoryBoard上的Controller,请执行以下操作:

 let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let newViewController = storyBoard.instantiateViewController(withIdentifier: "newViewController") as! NewViewController self.present(newViewController, animated: true, completion: nil) 

您应该使用当前导航控制器推送新的视图控制器,不存在。

 self.navigationController.pushViewController(nextViewController, animated: true) 

所以如果你提出一个视图控制器它不会显示在导航控制器。 它将只需要完整的屏幕。 对于这种情况下,你必须创build另一个导航控制器,并nextViewController添加你的nextViewController ,并呈现这个新的导航控制器。

另一种方法是只推视图控制器。

 self.presentViewController(nextViewController, animated:true, completion:nil) 

有关更多信息,请查阅Apple文档: – https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/doc/uid/TP40006926-CH3-SW96

  OperationQueue.main.addOperation { let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let newViewController = storyBoard.instantiateViewController(withIdentifier: "Storyboard ID") as! NewViewController self.present(newViewController, animated: true, completion: nil) } 

它在我的工作内部的OperationQueue.main.addOperation,这将在主线程中执行