presentViewController and displaying navigation bar presentViewController and displaying navigation bar ios ios

presentViewController and displaying navigation bar


It is true that if you present a view controller modally on the iPhone, it will always be presented full screen no matter how you present it on the top view controller of a navigation controller or any other way around. But you can always show the navigation bar with the following workaround way:

Rather than presenting that view controller modally present a navigation controller modally with its root view controller set as the view controller you want:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];UINavigationController *navigationController =     [[UINavigationController alloc] initWithRootViewController:myViewController];//now present this navigation controller modally [self presentViewController:navigationController                   animated:YES                   completion:^{                        }];

You should see a navigation bar when your view is presented modally.


Swift 5.*

Navigation:

guard let myVC = self.storyboard?.instantiateViewController(withIdentifier: "MyViewController") else { return }let navController = UINavigationController(rootViewController: myVC)self.navigationController?.present(navController, animated: true, completion: nil)

Going Back:

self.dismiss(animated: true, completion: nil)

Swift 2.0

Navigation:

let myVC = self.storyboard?.instantiateViewControllerWithIdentifier("MyViewController");let navController = UINavigationController(rootViewController: myVC!)self.navigationController?.presentViewController(navController, animated: true, completion: nil)

Going Back:

self.dismissViewControllerAnimated(true, completion: nil)


Can you use:

[self.navigationController pushViewController:controller animated:YES];

Going back (I think):

[self.navigationController popToRootViewControllerAnimated:YES];