iPhone: Setting Navigation Bar Title

IphoneObjective CUinavigationcontrollerUinavigationbarUinavigationitem

Iphone Problem Overview


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!

Iphone Solutions


Solution 1 - Iphone

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 - Iphone

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 - Iphone

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 - Iphone

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

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

Solution 5 - Iphone

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";
}

Solution 6 - Iphone

In my navigation based app I do this:

myViewController.navigationItem.title = @"MyTitle";

Solution 7 - Iphone

By default the navigation controller displays the title of the 'topitem'

so in your viewdidload method of your appdelegate you can. I tested it and it works

navController.navigationBar.topItem.title = @"Test";

Solution 8 - Iphone

I had a navigation controllers integrated in a TabbarController. This worked

self.navigationItem.title=@"title";

Solution 9 - Iphone

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

This code worked.

Solution 10 - Iphone

If you are working with Storyboards, you can click on the controller, switch to the properties tab, and set the title text there.

Solution 11 - Iphone

I guess you need a dynamic title that is why you don't set it in IB.

And I presume your viewController object is the one specified in the NIB?

Perhaps trying setting it to a dummy value in IB and then debug the methods to see which controller has the dummy value - assuming it appears as the title...

Solution 12 - Iphone

From within your TableViewController.m : >self.navigationController.navigationBar.topItem.title = @"Blah blah Some Amazing title";

Solution 13 - Iphone

For all your Swift-ers out there, this worked perfectly for me. It's notably one of the shorter ways to accomplish setting the title, as well:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionArthur SkirvinView Question on Stackoverflow
Solution 1 - IphonekennytmView Answer on Stackoverflow
Solution 2 - IphoneSorin AntohiView Answer on Stackoverflow
Solution 3 - IphoneJigishView Answer on Stackoverflow
Solution 4 - IphoneM.Gökay BoruldayView Answer on Stackoverflow
Solution 5 - IphonePantelis ProiosView Answer on Stackoverflow
Solution 6 - IphonetestingView Answer on Stackoverflow
Solution 7 - Iphoneronaldus_magnusView Answer on Stackoverflow
Solution 8 - IphoneSagar DalwaleView Answer on Stackoverflow
Solution 9 - IphonermshView Answer on Stackoverflow
Solution 10 - IphoneGuyView Answer on Stackoverflow
Solution 11 - IphoneChris KimptonView Answer on Stackoverflow
Solution 12 - IphoneOneInABajilianView Answer on Stackoverflow
Solution 13 - IphonekbpontiusView Answer on Stackoverflow