2010-10-07 3 views
2

Je me demande pourquoi mon UINavigationController ne me laisse pas définir un titre. Cela me permet de changer la couleur de navigationBar, mais le titre et rightBarButtonItem que je définis sont juste ignorés. Pourquoi?UINavigationController Titre non appliqué

Voici mon code:

taps = 0; 

    UIView*controllerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 

    controllerView.backgroundColor = [UIColor whiteColor]; 

    controller = [[UIViewController alloc] init]; 

    [controller setView:controllerView]; 

    [controllerView release]; 

    navController = [[UINavigationController alloc] initWithRootViewController:controller]; 

    navController.navigationBar.barStyle = 1; 

    navController.navigationItem.title = @"Setup"; 

    UIBarButtonItem*item = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonSystemItemDone target:self action:@selector(dismissSetup:)]; 

    navController.navigationItem.rightBarButtonItem = item; 

    [item release]; 

    [self presentModalViewController:navController animated:YES]; 

    [mp stop]; 

p.s: Je sais que je ne suis pas libérer une partie des choses que j'alloc'ed, je fais ça plus tard!

Répondre

5

Le contrôleur de navigation met à jour le milieu de la barre de navigation comme suit: Si le nouveau contrôleur de vue de niveau supérieur a une vue de titre personnalisé, l'affichage de la barre de navigation qui vue à la place du titre par défaut vue. Pour spécifier une vue de titre personnalisée, définissez la propriété titleView de la vue élément de navigation du contrôleur. Si aucune vue de titre personnalisée n'est définie, la barre de navigation affiche une étiquette contenant le titre par défaut du contrôleur . La chaîne pour cette étiquette est généralement obtenue à partir de la propriété title de la vue contrôleur lui-même. Si vous voulez un affichage titre différent de celui associé au contrôleur

vue, définir le titre propriété de l'élément de navigation du contrôleur de vue à la place.

Vous voulez que votre UINavigationController change de titre en fonction du viewcontroller qui est actuellement en haut. Le chemin à parcourir est donc de définir le titre dans les viewcontrollers que vous insérez dans le tableau viewControllers.

Et par ailleurs: Je ne pense pas navigationcontrollers sont censées être présentées de façon modale:

Parce que la UINavigationController classe hérite de la ont leur propre point de vue, les contrôleurs de navigation classe UIViewController que est accessible par la vue propriété. Lorsque vous déployez une interface de navigation , vous devez installer cette vue en tant que racine de la hiérarchie de vue que vous créez. Par exemple, si vous déployez l'interface de navigation par lui-même, vous afficherez cette vue sous-vue principale de votre fenêtre. Pour installer une interface de navigation à l'intérieur une interface de barre d'onglets, vous devez installer l'affichage du contrôleur de navigation comme la vue racine de l'onglet approprié.

+0

comment puis-je définir l'affichage titre des contrôleurs? – Pripyat

+5

En fait, Apple est bien de présenter les contrôleurs de navigation modalement.Il y a une section intitulée «Affichage modulaire d'un contrôleur de navigation» dans la section «Combined View Controller Interfaces» du Guide de programmation de View Controller qui explique spécifiquement comment faire ceci: http://developer.apple.com/library/ios/# featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html – Alyoshak

16

ensemble: self.title = @"This is my title"; dans le viewController

(ou dans votre cas prévu controller.title = @"this is my title";)

+3

Meilleure réponse. la réponse acceptée est tl; tr (trop long à lire) – Guy

Questions connexes