iPhone: Setting Navigation Bar Title
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";
}
Arthur Skirvin
Updated on July 08, 2022Comments
-
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
andinitWithNibName
didn't work either. Anybody know what's happening and how to get it happening right?Thanks!
-
Arthur Skirvin about 14 yearsWow. 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 about 14 years@SorinA,Thanks. It is the better way to give the title of navigation bar.
-
maltalef over 11 yearsyour 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 over 11 yearsWelcome 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 almost 11 yearsSee Sorin's answer for a storyboard-compatible solution.
-
Tchelow over 9 yearsviewDidAppear did the trick for me after 2 hours trying to work this out. Thanks :)
-
jerry_sjtu about 9 yearsThanks for your answer which really save me a lot of time. :) @kennytm
-
user2962499 about 8 yearstopItem.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.