I have a UINavigationController setup in my AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSD
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 a viewDidLoad
as well, and forgot to call [super viewDidLoad]
which thereby caused me to override the base class's viewDidLoad
where I was setting up my navigation controller buttons. Oooops.
Using presentModalViewController
to show the naviagtionController. Set the navagitionController bar button like so:
[navigationController.navigationBar.topItem setLeftBarButtonItem:
[[[UIBarButtonItem alloc] initWithTitle: @"Back"
style: UIBarButtonItemStylePlain
target: self
action: @selector(dismisstheModal:)] autorelease]];
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
-(id)initWithRootViewController:(UIViewController *)rootViewController
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
-(void)pushViewController:detailViewController animated:YES
method.
Try this:
DetailViewController *detailViewController = [[DetailViewController alloc] init];
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle : @"Back"
style : UIBarButtonItemStyleDone
target : nil
action : nil];
self.navigationItem.backBarButtonItem = back;
[self.navigationController pushViewController : detailViewController animated : YES];
[detailViewController release];
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
or backBarButtonItem = nil
in DealViewController, or does it have a different leftBarButtonItem
defined?