How to set the title of a Navigation Bar programmatically?

IosIphoneViewUinavigationbar

Ios Problem Overview


I have a Navigation Bar in a view, and I want to change its Navigation Item title programmatically.

How is this done?

Ios Solutions


Solution 1 - Ios

In your UIViewController

self.navigationItem.title = @"The title";

Solution 2 - Ios

Swift 3 Version:

If you use a navigation bar without navigation controller, then you can try this:

navigationBar.topItem?.title = "Your Title"

Hope for help.

Solution 3 - Ios

In viewDidLoad

  self.title = @"Title";

Solution 4 - Ios

Write the below code in viewDidLoad or may be better would be under initWithNibName:

  self.navigationItem.title = @"title";

Thanks.

Solution 5 - Ios

From Apple Documentation:

> The most common way to use a navigation bar is with a navigation > controller. You can also use a navigation bar as a standalone object > in your app.

So If you have a UINavigationController, all what you have to do to set the title of the navigation bar (as explained in all previous answers)

self.navigationItem.title = @"title";

But If you have a standalone navigation bar that is created programmatically within an object of UIViewController, You have to set the initial appearance of the navigation bar by creating the appropriate UINavigationItem objects and adding them to the navigation bar object stack i.e.

  1. Create an instance of navigation bar (UINavigationBar)
  2. Create an instance of navigation bar item (UINavigationItem) that manages the buttons and views to be displayed in a UINavigationBar object. Note that you set the title at this step.
  3. (Optional Step) Add right/left buttons (instances of UIBarButtonItem) to the navigation bar item.

Sample of Objective-C Code for the mentioned steps:

UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];

/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;

/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;

/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];

/* add navigation bar to the root view.*/
[self.view addSubview:navbar];

For Swift version of the standalone navigation bar, check out this answer.

Solution 6 - Ios

You can also use 

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

Solution 7 - Ios

In your UIViewController's viewDidLoad

self.navigationItem.title = "The title";  //In swift 4

or

you can just

self.title = "The title"

will do the trick

you can also put the above statement in the app delegate to replicate globally.

Solution 8 - Ios

This code did not work for me

self.navigationItem.title = @"Title here";

But this worked.

self.title = "Title Name"

Solution 9 - Ios

Use it in ViewDidLoad method

Format :

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

Example :

self.navigationItem.title = @"Title here";

Solution 10 - Ios

very important note : make sure you make the changes that mentioned above in parent view Controller's viewDidLoad method, or parents navigation bar in storyboard

Solution 11 - Ios

Sometimes you might get a case where you are updating the title and it is not causing any effect, this can be when you have a custom view on the topItem therefore you might want to update it like this: (self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

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
QuestionDoug NullView Question on Stackoverflow
Solution 1 - IosarclightView Answer on Stackoverflow
Solution 2 - IosJeromeView Answer on Stackoverflow
Solution 3 - IosMadhuView Answer on Stackoverflow
Solution 4 - IosNikhil BansalView Answer on Stackoverflow
Solution 5 - IosWael ShowairView Answer on Stackoverflow
Solution 6 - IosSurjeet RajputView Answer on Stackoverflow
Solution 7 - IosNickCoderView Answer on Stackoverflow
Solution 8 - IosPrasad AView Answer on Stackoverflow
Solution 9 - IosJayprakash DubeyView Answer on Stackoverflow
Solution 10 - IossmoothumutView Answer on Stackoverflow
Solution 11 - IosHola Soy Edu Feliz NavidadView Answer on Stackoverflow