web-dev-qa-db-fra.com

iPhone: définition du titre de la barre de navigation

Salut à tous. Je suis encore relativement novice dans le développement d'iPhone et j'ai un peu de mal à comprendre comment changer le titre de ma barre de navigation. Sur une autre question sur ce site, quelqu'un a recommandé d'utiliser:

viewController.title = @"title text";

mais cela ne fonctionne pas pour moi ... Dois-je ajouter un contrôleur UINavigation pour accomplir cela? Ou peut-être juste un point de vente de ma sous-classe UIViewController? Si cela peut aider, j'ai défini la barre de navigation dans IB et j'essaie de définir son titre dans ma sous-classe UIViewController. C'est une autre de ces choses simples qui me donne mal à la tête. Putting self.title = @ "titre du texte"; dans viewDidLoad et initWithNibName ne fonctionnait pas non plus. Quelqu'un sait-il ce qui se passe et comment le faire correctement?

Merci!

84
Arthur Skirvin

Le contrôleur de vue doit être un enfant de UINavigationController pour le .title propriété à prendre effet. Si la barre UINavigation est simplement une vue, vous devez pousser un élément de navigation contenant le titre ou modifier le dernier élément de navigation:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

ou

bar.topItem.title = @"title text";
153
kennytm

si vous faites tout cela par code dans la méthode viewDidLoad de la UIViewController, vous ne devriez ajouter que self.title = @"title text";

quelque chose comme ça:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

vous pouvez aussi essayer self.navigationItem.title = @"title";

vérifiez également si votre élément de navigation n'est pas null et si vous avez défini un arrière-plan personnalisé pour la barre de navigation, vérifiez si le titre est défini sans.

121
Sorin Antohi

Il y a un problème avec l'utilisation de self.title = @"title";

Si vous utilisez la barre de navigation avec la barre d'onglets, la ligne ci-dessus modifie également le libellé de l'élément de la barre d'onglets. Pour éviter cela, utilisez ce que @testing a suggéré

self.navigationItem.title = @"MyTitle";
33
Jigish

Si vous voulez changer le titre de la barre de navigation (pas le titre du bouton Précédent de la barre de navigation!), Ce code fonctionnera.

self.navigationController.topViewController.title = @"info";
12
M.Gökay Borulday

Si vous souhaitez modifier le titre d'un navBar dans un contrôleur tabBar, procédez comme suit:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}
9
Pantelis Proios

Dans mon application basée sur la navigation, je fais ceci:

myViewController.navigationItem.title = @"MyTitle";
5
testing

Par défaut, le contrôleur de navigation affiche le titre du 'topitem'

donc, dans votre méthode viewdidload de votre appdelegate, vous pouvez. Je l'ai testé et ça marche

navController.navigationBar.topItem.title = @"Test";
4
ronaldus_magnus

J'avais un contrôleur de navigation intégré dans un TabbarController. Cela a fonctionné

self.navigationItem.title=@"title";
4
Sagar Dalwale

Si vous travaillez avec Storyboards, vous pouvez cliquer sur le contrôleur, basculer vers l’onglet Propriétés et y définir le texte du titre.

2
Guy
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

Ce code a fonctionné.

2
rmsh

Je suppose que vous avez besoin d’un titre dynamique, c’est pourquoi vous ne le définissez pas dans IB.

Et je suppose que votre objet viewController est celui spécifié dans la NIB?

Peut-être essayer de lui attribuer une valeur factice dans IB, puis de déboguer les méthodes pour voir quel contrôleur a la valeur factice - en supposant qu'elle apparaisse comme le titre ...

1
Chris Kimpton

À partir de votre TableViewController.m:

self.navigationController.navigationBar.topItem.title = @ "Blah blah Un titre incroyable";

1
OneInABajilian

Pour tous vos membres, cela a parfaitement fonctionné pour moi. C'est notamment l'un des moyens les plus courts pour définir le titre:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}
1
kbpontius

Ce qui a fonctionné pour moi était self.titleLabel.text = @"New Title";

0
Peter Brockmann