Par programmation bouton ajouter pour UINavigationController

Je pense que cela devrait être simple, mais je suis de gauche, de me gratter la tête. J'ai une application avec plusieurs ViewControllers installation dans un storyboard. Je veux que chacun de ces avoir la même barre de navigation en haut de chaque point de vue, mais cette manette de navigation pour avoir les mêmes boutons que sur tous les points de vue. La manette de navigation de configuration dans AppDelegate et les boutons sont ajoutés dans le ViewDidLoad de chaque ViewController (conformément à la réponse que j'ai reçue ici pour une autre question), mais pour le moment, les boutons (et le titre) ne se montrent pas.

Où la UINavigationController est setup - AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    MainViewController* mainVC = [mainStoryboard instantiateInitialViewController];
    UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:mainVC];

    [self.window setRootViewController:navVC];

    [_window makeKeyAndVisible];

    return YES;
}

L'un des points de Vue:

- (void)viewDidLoad
{

    [self setTitle:@"Congress app"];  //< This does not set the title of the NavController

    UIBarButtonItem *showSettingsButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showSettings:)];
    UIBarButtonItem *showMenuButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"menuButton.png"] style:UIBarButtonItemStylePlain target:self action:@selector(revealMenu:)];

    //self.navigationItem.leftBarButtonItem = showMenuButton;
    //self.navigationItem.rightBarButtonItem = showSettingsButton;
    self.navigationController.navigationItem.leftBarButtonItem = showMenuButton;
    self.navigationController.navigationItem.rightBarButtonItem = showSettingsButton;

    UINavigationController *currentNav;
    UIViewController *VCname;   
    NSLog(@"First left button in navigation controller - %@", [self.navigationController.navigationItem.leftBarButtonItems objectAtIndex:0]);
    NSLog(@"First right button in navigation controller - %@", [self.navigationController.navigationItem.rightBarButtonItems objectAtIndex:0]);
    [super viewDidLoad];  
}

J'ai un couple de NSLogs qui montrent ce que (le cas échéant) est dans la manette de navigation, il montre: et qui laisse entendre que les boutons sont ajoutés mais n'apparaît pas?

EDIT:

Je viens de rappeler qu'il est un ViewController (InitViewController.m) qui est déclenché avant la CR dans le code ci-dessus. Le NavigationController est attribuée ici:

- (void)viewDidLoad
{
[super viewDidLoad];

self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
}

C'est probablement la cause du problème.

EDIT 2:

Grâce à Saurav Mac, j'ai suivi le problème à moi d'essayer d'ajouter les boutons sur le "mauvais" - vue-contrôleur. J'ai eu la Navigation de configuration du Contrôleur dans AppDelegate.m, le premier-Vue-Contrôleur est InitViewController qui appelle MainViewController être le "top view controller'. Ne peux pas croire que j'ai manqué, merci pour l'aide.

  • Avez-vous supprimé le "Principal" [votre storyboard nom] (puisque vous êtes à la gestion manuelle des le contrôleur initiale) sur Project Settings > #target# > Deployment Info > Main Interface ?
  • Dude permet de revenir à l'essentiel, avez-vous essayé d'ajouter une plaine barbuttonitem tout d'abord, au Lieu d'essayer d'ajouter un bouton une image? Laissez-moi savoir si cela fonctionne d'abord 🙂
  • J'ai juste essayé: [self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Titre" style:UIBarButtonItemStylePlain cibles:néant action:@selector(showSettings:)]animated:YES]; toujours pas de chance...
  • Veuillez examiner cette migth résoudre votre problème stackoverflow.com/a/26269894/4188824
InformationsquelleAutor Agamemnon | 2014-01-20