UINavigationController how to set title
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 UINavigationController
embedding 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.
Related videos on Youtube
grilix
I develop for the web, think about life and I like music :)
Updated on July 01, 2020Comments
-
grilix almost 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 about 12 yearsDid you solve this problem and can you tell me what should be done?
-
grilix about 12 yearsthe "accepted" (by @willcodejavaforfood)response solved this for me.
-
-
grilix over 12 yearsthe 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 over 12 yearsI have now: NSLog(@"set title: %@", title); self.title = title; self.navigationItem.title = title; self.navigationController.title = title; // none of these works :/
-
grilix over 12 yearsIn the pushed views (when user selects an item), the title is changed correctly
-
Gyani over 12 yearsset title in - (void)viewWillAppear:(BOOL)animated method
-
Chilly Zhong over 12 yearsI 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 over 12 yearsmy navigationbar does not have a "rootViewController" :?
-
Tom over 1 yearself.title = @"Title"; is working