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.
UINavigationBar
gère une pile de UINavigationItem
, à la manière d'un gestionnaire UINavigationController
et d'une pile de UIViewController
s. 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.
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;
(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).
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.
Voici le moyen le plus simple:
[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
vous pouvez utiliser la barre de navigation existante avec le code suivant
self.navigationController?.navigationBar.topItem?.title = "Calender"
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