web-dev-qa-db-fra.com

UINavigationBar - Définir le titre par programme?

J'ai une application de barre d'onglets avec une vue différente sur chaque onglet. Chaque vue a un UINavigationBar avec un titre défini sur Interface Builder. Je veux changer le titre en fonction d'une clause de la méthode ViewDidLoad, donc si x {change le titre}.

J'ai essayé self.title = @"title", mais cela change le titre de l'élément de barre d'onglets lui-même.

Alors, comment cela se fait-il?

75
AveragePro

J'ai défini le titre par programme en utilisant du code comme ceci:

navBar.topItem.title = @"title";

où navBar est déclaré en tant que IBOutlet UINavigationBar lié à la barre de navigation dans le générateur d'interface. Cela a fonctionné dans mon application; Cependant, je n'utilisais pas de barre de tabulation.

Si navBar.topItem est l'élément de la barre d'onglets, je ne vois pas comment vous pouvez modifier le titre qui apparaît dans la barre de navigation sans modifier également le titre de l'élément de la barre d'onglets, car l'élément supérieur et les éléments de la barre d'onglet le même objet.

195
Greg

Utilisation

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

le réglage de navBar.topItem.title ne fonctionnera pas dans toutes les circonstances.

69
ChrisP

Utilisez ceci : 

    CGRect navBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 44.0);
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:navBarFrame];

    UINavigationItem *navItem = [UINavigationItem alloc];
    navItem.title = @"Your Title";

    [navBar pushNavigationItem:navItem animated:false];

[self.view addSubView:navBar]; 

ou 

self.tableView.tableHeaderView = navBar; etc
25
Muzammil

Si la classe est un type de UIViewController, vous pouvez définir le titre comme indiqué dans la méthode viewDidLoad.

    [self setTitle:@"My Title"];
11
Augustine P A

Créer IBOutlet sur UINavigationBar

navigationBar.topItem.title = @"Title";

J'espère que cela t'aides.

6
Shyam

Dans ViewDidLoad de votre ViewController.m, écrivez simplement,

self.navigationItem.title=@"Hello World";

Voici la sortie:

enter image description here

5
iAnkit

J'ai utilisé ce qui suit:

self.navigationController.navigationBar.topItem.title = @"Title";

Cependant, je devais aussi l'appeler dans un bloc de dispatch, car cela ne changerait pas le titre s'il était appelé dans le viewDidLoad sans ce dernier.

2
Tod Cunningham

Notez que pour que le titre apparaisse AT, TOUS les délégués du contrôleur de navigation DOIVENT être réglés sur la barre de navigation, sinon le titre ne sera JAMAIS affiché!

2
Mike

Vous pouvez également simplement définir le titre dans ViewDidLoad sous ViewController ou TableViewController à l’aide de

_title = @"Title";

ou

self.title = @"Title";
1
donmiller

J'ai réalisé cela dans Swift 5

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "Title"
}
0
IMRAN RASHEED

Essaye ça,

self.navigationItem.title = @"Your title";
0
Kiran eldho