Set the title of Navigation Bar created in Interface Builder

IosUinavigationbar

Ios Problem Overview


I have a modal view controller whose view comes from a XIB. I want it to have the same look and feel as the rest of my navigation based app, but it's not a view that's pushed to the navigation stack, it's presented modally. I dragged a UINavigationBar in and made it an outlet, but it doesn't have a title property to set. I have two fields that can bring up this modal view, and I want the title set differently depending on which one creates the modal view.

Ios Solutions


Solution 1 - Ios

UINavigationBar's manage a stack of UINavigationItems much like a UINavigationController manager a stack of UIViewControllers. To set what is visible directly, you should use either pushNavigationItem:animated: or setItems:animated: using the navigationItem of the view controller you want the bar to reflect.

eg:

self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];

The above code where you have a property navigationBar which references the stand-alone navigation bar.

If you don't want to manage it yourself, you can do as mplappert suggested and nest your view controller (without a stand-alone UINavigationBar) in a UINavigationController and present the navigation controller modally instead of your view controller.

Solution 2 - Ios

Also found this easier way if you've already defined a UINavigationBar in your IB. Assuming self.navigationBar is your IBOutlet:

self.navigationBar.topItem.title = title;

Solution 3 - Ios

(Using XCode 4.5.2) Found a method that works directly in Interface Builder - without setting in code.

With the ViewController object selected in (IB), under the Identity Inspector there is a section labeled "User Defined Runtime Attributes". I added the keyPath "title" of type String and set it to the value I wanted.

Tested and this works when pushed onto a Nav Controller stack and when opened modally (with a Modal Nav Controller of course).

Solution 4 - Ios

viewcontroller.h file in create iboutlet of the navigation item

     @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;
  • Named it "navigationBarTitle"

in viewcontroller.m file in add the code in super viewDidLoad

      self.navigationBarTitle.title = @"Favorites";

connect the storybord in navigation bar item to navigationBarTitle.

Solution 5 - Ios

in my .h file

  • Dragged the Child of the navigation item from the storyboard into the .h file

  • Named it "navigationBarTitle"

in my .m file

  • Added self.navigationBarTitle.title = @"Some Title";

Solution 6 - Ios

Here is the Simplest way:

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

Solution 7 - Ios

you can use existing navigation bar with following code

self.navigationController?.navigationBar.topItem?.title = "Calender"

Solution 8 - Ios

Simply put your UIViewController into a new UINavigationControllers view controller stack and present that navigation controller modally.

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
QuestionSteveView Question on Stackoverflow
Solution 1 - IoscodelarkView Answer on Stackoverflow
Solution 2 - IostypeoneerrorView Answer on Stackoverflow
Solution 3 - Iosuser1864957View Answer on Stackoverflow
Solution 4 - Iosyogesh yadavView Answer on Stackoverflow
Solution 5 - IosDevine LinvegaView Answer on Stackoverflow
Solution 6 - IosJouharView Answer on Stackoverflow
Solution 7 - IosShaileshAherView Answer on Stackoverflow
Solution 8 - IosmplappertView Answer on Stackoverflow