I am showing a modal view which is a UITableViewController
class. For some reason it won't show the navigation bar when I show it. Here is my code:
SettingsCreateAccount *detailViewController = [[SettingsCreateAccount alloc] initWithStyle:UITableViewStyleGrouped]; detailViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; detailViewController.navigationController.navigationBarHidden = NO; [self.navigationController presentModalViewController:detailViewController animated:YES]; detailViewController = nil; [detailViewController release];
I thought it was shown by default? If it helps, I am calling this from another class that is also a UITableViewController
managed by a UINavigationController
. Ideas?
When you present a modal view controller it does not use any existing navigation controllers or navigation bars. If all you want is to display a navigation bar, you need to add the navigation bar as a subview of your modal view and present it as you're doing.
If you want to present a modal view controller with navigation functionality, you need to present a modal navigation controller containing your detail view controller instead, like so:
SettingsCreateAccount *detailViewController = [[SettingsCreateAccount alloc] initWithStyle:UITableViewStyleGrouped]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; [detailViewController release]; navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; [self presentModalViewController:navController animated:YES]; [navController release];
Your modal controller will manage its own navigation stack.
Here is one way to display navigation bar for those who are using storyboards, suggested by Apple's Tutorial on Storyboard.
Because a modal view controller doesn’t get added to the navigation stack, it doesn’t get a navigation bar from the table view controller’s navigation controller. To give the view controller a navigation bar when presented modally, embed it in its own navigation controller.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With