web-dev-qa-db-fra.com

Comment définir le titre d'une barre de navigation par programme?

J'ai une barre de navigation dans une vue et je souhaite modifier le titre de l'élément de navigation par programmation.

Comment est-ce fait?

75
Doug Null

Dans votre UIViewController

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

Swift 3 Version:

Si vous utilisez une barre de navigation sans contrôleur de navigation, vous pouvez essayer ceci:

navigationBar.topItem?.title = "Your Title"

J'espère de l'aide.

23
Jerome

Dans viewDidLoad

  self.title = @"Title";
10
Madhu

De Documentation Apple :

La manière la plus courante d'utiliser une barre de navigation est d'utiliser un contrôleur de navigation. Vous pouvez également utiliser une barre de navigation en tant qu'objet autonome dans votre application.

Donc, si vous avez un contrôleur UINavigation, tout ce que vous devez faire pour définir le titre de la barre de navigation (comme expliqué dans toutes les réponses précédentes)

self.navigationItem.title = @"title";

Mais si vous avez une barre de navigation autonome créée par programme dans un objet de UIViewController, vous devez définir l'apparence initiale de la barre de navigation en créant les objets UINavigationItem appropriés et en les ajoutant à la pile d'objets de la barre de navigation, i.e.

  1. Créer une instance de barre de navigation (UINavigationBar)
  2. Créez une instance d'élément de barre de navigation (UINavigationItem) qui gère les boutons et les vues à afficher dans un objet UINavigationBar. Notez que vous définissez le titre à cette étape.
  3. (Étape facultative) Ajoutez des boutons droit/gauche (instances de UIBarButtonItem) à l'élément de la barre de navigation.

Exemple de code Objective-C pour les étapes mentionnées:

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];

Pour la version Swift de la barre de navigation autonome, consultez cette réponse .

7
Wael Showair

Écrivez le code ci-dessous dans viewDidLoad ou peut-être mieux serait sous initWithNibName:

  self.navigationItem.title = @"title";

Merci.

6
Nikhil Bansal

Vous pouvez aussi utiliser ????????

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

Dans votre viewDidLoad de votre UIViewController

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

fera l'affaire

vous pouvez également placer l'instruction ci-dessus dans le délégué de l'application pour effectuer une réplication globale.

1
NickCoder

Ce code n'a pas fonctionné pour moi

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

Mais cela a fonctionné.

self.title = "Title Name"
1
Prasad A

remarque très importante: veillez à apporter les modifications mentionnées ci-dessus dans la vue parent de la méthode viewDidLoad du contrôleur ou dans la barre de navigation des parents dans le storyboard.

0
smoothumut

Utilisez-le dans la méthode ViewDidLoad

Format:

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

Exemple:

self.navigationItem.title = @"Title here";
0
Jayprakash Dubey

Parfois, vous pouvez obtenir un cas où vous mettez à jour le titre et ne cause aucun effet. Cela peut se produire lorsque vous avez une vue personnalisée sur le topItem. Vous pouvez donc vouloir le mettre à jour comme ceci: (self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"