UINavigationController how to set title

27,952

Solution 1

In your UIViewController there is a title property and it is that property that will be displayed by the NavigationController. So when pushing a new UIViewController onto the navigation stack set the title of that UIViewController to whatever is appropriate.

In your case it looks like it would be:

[self setTitle:@"WhateverTitle"];

Solution 2

For those looking for a Swift solution:

class CustomViewController: SuperViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "My Custom Title"
  }
}

The title needs to be set on the UIViewController and not on the UINavigationControllerembedding the view controller.

Documentation: UIViewController Class Reference: title Property

Solution 3

use

self.title = @"yourTitle";

Solution 4

Swift

title = "whateverTitle". It's a UIViewController instance property ; invoke anytime.

From the documentation:

Declaration
var title: String? { get set }

Discussion
Set the title to a human-readable string that describes the view. If the view controller has a valid navigation item or tab-bar item, assigning a value to this property updates the title text of those objects.

Share:
27,952

Related videos on Youtube

grilix
Author by

grilix

I develop for the web, think about life and I like music :)

Updated on July 01, 2020

Comments

  • grilix
    grilix over 3 years

    I have a Controller/View for a generic list of items, that can be extended for displaying a custom list.. Listing and navigation works fine.. but I can't change the title of UINavigationController. In the generic Controller:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self.view addSubview: navigationController.view];
    }
    - (void)setNavigationTitle: (NSString *)title
    {
        NSLog(@"set title: %@", title); // this works
        self.navigationController.title = title; // Nothing works here
    }
    

    Then, the extended class does..

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self setNavigationTitle: @"Custom list"];
    }
    

    The navigationBar still have "Item" as title :(

    • Tim
      Tim almost 13 years
      Did you solve this problem and can you tell me what should be done?
    • grilix
      grilix almost 13 years
      the "accepted" (by @willcodejavaforfood)response solved this for me.
  • grilix
    grilix over 13 years
    the first view is not pushed: [self.view addSubview: navigationController.view]; i tried also: self.title = @"AAAA"; [self.view addSubview: navigationController.view]; and does not works
  • grilix
    grilix over 13 years
    I have now: NSLog(@"set title: %@", title); self.title = title; self.navigationItem.title = title; self.navigationController.title = title; // none of these works :/
  • grilix
    grilix over 13 years
    In the pushed views (when user selects an item), the title is changed correctly
  • Gyani
    Gyani over 13 years
    set title in - (void)viewWillAppear:(BOOL)animated method
  • Chilly Zhong
    Chilly Zhong over 13 years
    I notice that you didn't set a rootViewController for navigation controller. The first view controller in navigationController is called rootViewController. You may set its title using self.title = @"xxx".
  • grilix
    grilix over 13 years
    my navigationbar does not have a "rootViewController" :?
  • Tom
    Tom about 2 years
    self.title = @"Title"; is working