使用NavigationViewController swift呈现ViewController

Yur*_*rov 58 uinavigationbar uinavigationcontroller viewcontroller ios swift

我有系统"NavigationViewController - > MyViewController",我编程想要在第三个视图控制器中呈现MyViewController.问题是我在呈现它之后在MyViewController中没有导航栏.你能帮助我吗?

var VC1 = self.storyboard.instantiateViewControllerWithIdentifier("MyViewController") as ViewController
self.presentViewController(VC1, animated:true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

ste*_*yde 186

调用在现有导航堆栈之外以模态方式presentViewController呈现视图控制器; 它不包含在您的UINavigationController或任何其他内容中.如果您希望新视图控制器具有导航栏,则有两个主要选项:

选项1.将新视图控制器推送到现有导航堆栈,而不是以模态方式呈现:

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
self.navigationController!.pushViewController(VC1, animated: true)
Run Code Online (Sandbox Code Playgroud)

选项2.将新视图控制器嵌入到新的导航控制器中,并以模态方式显示新的导航控制器:

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
let navController = UINavigationController(rootViewController: VC1) // Creating a navigation controller with VC1 at the root of the navigation stack.
self.present(navController, animated:true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

请记住,此选项不会自动包含"后退"按钮.你必须自己建立一个紧密的机制.

哪个最适合您的是人机界面设计问题,但通常清楚哪些是最有意义的.

  • 好.但是我怎么能关闭模态呢? (3认同)

Mak*_*zev 14

SWIFT 3

let VC1 = self.storyboard!.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController
let navController = UINavigationController(rootViewController: VC1)
self.present(navController, animated:true, completion: nil)
Run Code Online (Sandbox Code Playgroud)


Vin*_*shi 13

我的导航栏没有显示,所以我在Swift 2 iOS 9中使用了以下方法

let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") as! Dashboard

// Creating a navigation controller with viewController at the root of the navigation stack.
let navController = UINavigationController(rootViewController: viewController)
self.presentViewController(navController, animated:true, completion: nil)
Run Code Online (Sandbox Code Playgroud)