iPhone: Setting Navigation Bar Title

146,571

Solution 1

The view controller must be a child of some UINavigationController for the .title property to take effect. If the UINavigationBar is simply a view, you need to push a navigation item containing the title, or modify the last navigation item:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

or

bar.topItem.title = @"title text";

Solution 2

if you are doing it all by code in the viewDidLoad method of the UIViewController you should only add self.title = @"title text";

something like this:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

you could also try self.navigationItem.title = @"title";

also check if your navigationItem is not null and if you have set a custom background to the navigationbar check if the title is set without it.

Solution 3

There's one issue with using self.title = @"title";

If you're using Navigation Bar along with Tab bar, the above line also changes the label for the Tab Bar Item. To avoid this, use what @testing suggested

self.navigationItem.title = @"MyTitle";

Solution 4

If you want to change navbar title (not navbar back button title!) this code will be work.

self.navigationController.topViewController.title = @"info";

Solution 5

If you want to change the title of a navBar inside a tabBar controller, do this:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}
Share:
146,571
Arthur Skirvin
Author by

Arthur Skirvin

Updated on July 08, 2022

Comments

  • Arthur Skirvin
    Arthur Skirvin almost 2 years

    Hey all. I'm still pretty new to iPhone development, and I'm having a bit of trouble figuring out how to change the title of my Navigation Bar. On another question on this site somebody recommended using :

    viewController.title = @"title text";
    

    but that isn't working for me...Do I need to add a UINavigationController to accomplish this? Or maybe just an outlet from my UIViewController subclass? If it helps, I defined the navigation bar in IB and I'm trying to set its title in my UIViewController subclass. This is another one of those simple things that gives me a headache. Putting self.title = @"title text"; in viewDidLoad and initWithNibName didn't work either. Anybody know what's happening and how to get it happening right?

    Thanks!

  • Arthur Skirvin
    Arthur Skirvin about 14 years
    Wow. I've seriously spent the last hour browsing through forums and documentation trying to figure this out, and I'd convinced myself that it would be more complex than this. This code is so simple and I didn't have to re-fiddle anything in IB. Perfect! KennyTM, you rock. If I recall, you also answered my NSDate question and set me to researching dictionaries. You are my new favorite person on this site. Thanks A LOT for all your help!
  • Tirth
    Tirth about 14 years
    @SorinA,Thanks. It is the better way to give the title of navigation bar.
  • maltalef
    maltalef over 11 years
    your comment made me smile and wonder: did anyone ever make friends here in SO, ever? usually everyone here is very helpful but doesn't seem to express any human emotions (except the asker of course when he/she's frustrated)
  • Serge Belov
    Serge Belov over 11 years
    Welcome to SO and thanks for the post. It'd better look to post this info as a comment, please have a look at How to Answer for more info.
  • devios1
    devios1 almost 11 years
    See Sorin's answer for a storyboard-compatible solution.
  • Tchelow
    Tchelow over 9 years
    viewDidAppear did the trick for me after 2 hours trying to work this out. Thanks :)
  • jerry_sjtu
    jerry_sjtu about 9 years
    Thanks for your answer which really save me a lot of time. :) @kennytm
  • user2962499
    user2962499 about 8 years
    topItem.title may or may not be the navigation bar title. If it is the top level screen with no back button, it will set the title. But if you have a back button, the topItem.title is actually the back button title.