web-dev-qa-db-fra.com

Définir le titre de la barre de navigation créée dans Interface Builder

J'ai un contrôleur de vue modale dont la vue provient d'un fichier XIB. Je souhaite que son apparence et la même sensation que le reste de mon application basée sur la navigation, mais ce n'est pas une vue qui est poussée à la pile de navigation, elle est présentée de manière modale. J'ai fait glisser un UINavigationBar et en ai fait un point de vente, mais il n'a pas de propriété title à définir. J'ai deux champs qui peuvent afficher cette vue modale et je veux que le titre soit défini différemment en fonction de celui qui crée la vue modale.

51
Steve

UINavigationBar gère une pile de UINavigationItem, à la manière d'un gestionnaire UINavigationController et d'une pile de UIViewControllers. Pour définir ce qui est visible directement, vous devez utiliser pushNavigationItem:animated: ou setItems:animated: à l'aide de l'élément navigationItem du contrôleur de vue que vous souhaitez que la barre reflète.

par exemple:

self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];

Le code ci-dessus dans lequel vous avez une propriété navigationBar qui fait référence à la barre de navigation autonome.

Si vous ne voulez pas le gérer vous-même, vous pouvez faire ce que mplappert vous a suggéré et imbriquer votre contrôleur de vue (sans un UINavigationBar autonome) dans un UINavigationController et présenter le contrôleur de navigation de manière modale plutôt que votre contrôleur de vue.

90
codelark

Vous avez également trouvé ce moyen plus facile si vous avez déjà défini un UINavigationBar dans votre IB. En supposant que self.navigationBar soit votre IBOutlet:

self.navigationBar.topItem.title = title;
64
typeoneerror

(Utilisation de XCode 4.5.2) Nous avons trouvé une méthode qui fonctionne directement dans Interface Builder - sans définition de code.

Avec l'objet ViewController sélectionné dans (IB), sous l'inspecteur d'identité, se trouve une section intitulée " Attributs d'exécution définis par l'utilisateur " . J'ai ajouté le keyPath "titre" de type String et le définit à la valeur I voulait. 

Testé et cela fonctionne lorsqu'il est placé sur une pile de contrôleurs de navigation et ouvert modalement (avec un contrôleur de navigation modal bien sûr).

8
user1864957

fichier viewcontroller.h dans create iboutlet de l'élément de navigation

     @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;

- Le nomme "navigationBarTitle"

dans le fichier viewcontroller.m dans ajouter le code dans super viewDidLoad 

      self.navigationBarTitle.title = @"Favorites";

connectez l'objet Storybord dans l'élément de la barre de navigation à navigationBarTitle.

4
yogesh yadav

Voici le moyen le plus simple:

[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
0
Jouhar

vous pouvez utiliser la barre de navigation existante avec le code suivant

self.navigationController?.navigationBar.topItem?.title = "Calender"
0
ShaileshAher

dans mon fichier .h

  • Faites glisser l'enfant de l'élément de navigation du storyboard dans le fichier .h

  • L'a nommé "navigationBarTitle"

dans mon fichier .m

  • Ajouté self.navigationBarTitle.title = @ "Certains titres";
0
Devine Linvega