I have a UINavigationController setup in my AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
In my RootViewController I am pushing another view onto the stack:
//Show the deals
DealViewController *dvc = [[DealViewController alloc] initWithNibName:@"DealViewController" bundle:nil];
[self.navigationController.navigationBar setHidden:NO];
[self.navigationController pushViewController:dvc animated:YES];
The view shows up, but there is no back button that is added to my navigation bar. Why is this and how can I resolve it?
This happened to me because in my navigation controller's content controller I had set up some navigation controller behavior in
viewDidLoad
and in another class that inherits from my content controller, and the one that was being presented, i implemented aviewDidLoad
as well, and forgot to call[super viewDidLoad]
which thereby caused me to override the base class'sviewDidLoad
where I was setting up my navigation controller buttons. Oooops.Try this:
Are you setting
self.title
in RootViewController? Perhaps the UINavigationController doesn't have any text to put on the back button, so it omits it...?Are you setting
hidesBackButton = YES
orbackBarButtonItem = nil
in DealViewController, or does it have a differentleftBarButtonItem
defined?You must think of the navigation controller as a stack of navigation controllers each controlling one screen full of information. You instantiate the navigation controller with the
method. You specify the root view controller in this call. Then you add the navigation controller's view as a subview to the window, like you did before.
If you want to show your second screen you push another view controller on the stack by using
method.
Using
presentModalViewController
to show the naviagtionController. Set the navagitionController bar button like so: