0

J'ai la structure suivante dans le contrôleur de navigationUINavigationController changement vue enfant avec un autre

RootViewController 
     | 
     |--FirstViewController 
     | 
     |--SecondViewController 

Comment puis-je passer directement FirstViewController-SecondViewController sans montrer RootViewController. Je voudrais mettre un bouton à NavigationBar FirstViewController comme "Aller à SecondViewController."

Répondre

1

Dans la méthode d'action du bouton correspondant, initialiser le SecondViewController, puis assembler un NSArray constitué de deux éléments: le RootViewController et le nouveau initialisé SecondViewController (dans cet ordre, à savoir Root à l'index 0 et Second à l'index 1).

appeler ensuite la méthode setViewControllers:animated: du NavigationController, et passer le tableau des contrôleurs de vue comme premier argument. Rappelez-vous de la releaseSecondViewController après avoir appelé cette méthode, ou autorelease il lors de l'initialisation pour éviter une fuite de mémoire.

Juste pour clarifier les choses, cela entraînera la FirstViewController d'être libéré par le NavigationController.

Exemple:

- (void) goToSecondViewController 
{ 
    RootViewController *root = [[self.navigationController viewControllers] objectAtIndex:0]; 
    SecondViewController *second = [[[SecondViewController alloc] init] autorelease]; 
    NSArray *controllersArray = [NSArray arrayWithObjects: root, second, nil]; 

    [self.navigationController setViewControllers:controllersArray animated:YES]; 
} 

Référence: UINavigationController Class Reference

+0

Est-ce courant de maintien en date d'aujourd'hui? (juin 2012) Je ne demande pas si cela fonctionne ou pas, mais si ce n'est pas désapprouvé avec le SDK actuel. – Julian