Back button not appearing on UINavigationController

痞子三分冷 提交于 2019-11-30 21:49:41
GorillaPatch

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.

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?

Ali

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];

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]];

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!