80

Salut à tous. Je suis encore jeune dans le développement de l'iPhone, et j'ai un peu de mal à trouver comment changer le titre de ma barre de navigation. Sur une autre question sur ce que quelqu'un a recommandé d'utiliser le site:iPhone: Réglage de la barre de navigation Titre

viewController.title = @"title text"; 

mais qui ne fonctionne pas pour moi ... Ai-je besoin d'ajouter un UINavigationController pour y parvenir? Ou peut-être juste une sortie de ma sous-classe UIViewController? Si cela aide, 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. Mettre self.title = @ "texte du titre"; en viewDidLoad et initWithNibName ne fonctionnait pas non plus. Quelqu'un sait-il ce qui se passe et comment le faire?

Merci!

Répondre

147

Le contrôleur de vue doit être un enfant de quelques-uns UINavigationController pour que la propriété .title prenne effet. Si le UINavigationBar est tout simplement une vue, vous devez appuyer sur 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"; 
+8

Wow. J'ai sérieusement passé la dernière heure à parcourir les forums et la documentation pour essayer de comprendre, et je me suis convaincu que ce serait plus complexe que ça. Ce code est si simple et je n'ai pas eu à refaire quelque chose dans IB. Parfait! KennyTM, vous rock. Si je me souviens bien, vous avez également répondu à ma question NSDate et vous m'avez mis à la recherche de dictionnaires. Vous êtes ma nouvelle personne préférée sur ce site. Merci beaucoup pour toute votre aide! –

+5

votre commentaire m'a fait sourire et me demande: est-ce que quelqu'un s'est jamais fait des amis ici à SO, jamais? habituellement tout le monde ici est très utile mais ne semble pas exprimer des émotions humaines (sauf le demandeur bien sûr quand il/elle est frustré) – figha

+0

@figha: http://chat.stackoverflow.com/ est l'endroit pour cela. – kennytm

118

si vous faites tout par le code dans la méthode viewDidLoad du UIViewController vous ne devez ajouter self.title = @"title text";

quelque chose comme ceci:

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

vous pouvez également essayer self.navigationItem.title = @"title";

également vérifier si votre objet navigationItem n'est pas nul et si vous avez défini un arrière-plan personnalisé sur la barre de navigation, vérifiez si le titre est défini sans elle.

+0

@ Sorina, Merci. C'est le meilleur moyen de donner le titre de la barre de navigation. – Tirth

+1

Cela fonctionne aussi si vous utilisez des storyboards. – Napolux

1

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

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

Peut-être essayer la mise à une valeur factice dans IB et déboguer les méthodes pour voir quel contrôleur a la valeur fictive - en supposant qu'il apparaît comme le titre ...

5

Dans mon application à base de navigation que je fais ceci:

myViewController.navigationItem.title = @"MyTitle"; 
30

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

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

self.navigationItem.title = @"MyTitle"; 
4

Par défaut, le contrôleur de navigation affiche le titre de la « TopItem »

donc dans votre méthode de viewDidLoad de votre appdelegate vous pouvez.Je l'ai testé et il fonctionne

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

Ce code a fonctionné.

+0

Bienvenue à SO et merci pour le poste. Il serait préférable de publier cette information sous forme de commentaire, veuillez consulter [Comment répondre] (http://stackoverflow.com/questions/how-to-answer) pour plus d'informations. –

4

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

[email protected]"title"; 
2

Si vous travaillez avec des storyboards, vous pouvez cliquer sur le contrôleur, passez à l'onglet Propriétés et définissez le texte du titre là.

9

Si vous voulez changer le titre d'un Navbar dans un contrôleur tabBar, faites ceci:

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

viewDidAppear a fait l'affaire pour moi après 2 heures essayant de résoudre cela. Merci :) – Tchelow

+0

Ceci est parfait –

+0

topItem.title peut ou ne pas être le titre de la barre de navigation. Si c'est l'écran de niveau supérieur sans bouton de retour, il va définir le titre. Mais si vous avez un bouton de retour, le topItem.title est en fait le titre du bouton précédent. – user2962499

12

Si vous voulez changer le titre navbar (non navbar retour titre du bouton!) Ce code sera le travail.

self.navigationController.topViewController.title = @"info"; 
+0

Merci, cela a fonctionné pour moi! – davis

1

À partir de votre TableViewController.m :

self.navigationController.navigationBar.topItem.title = @ "Bla bla Certains titre exceptionnel";

1

Pour tous vos Swift-ers là-bas, cela a fonctionné parfaitement pour moi. Il est notamment l'une des façons plus courtes pour accomplir le titre de réglage, ainsi:

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" 
    } 
} 
0

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

Questions connexes