2010-11-29 32 views
1

J'ai une application basée sur la navigation qui permet à l'utilisateur d'explorer les hiérarchies. Certaines des hiérarchies d'enfants ont un seul élément en eux, par exemple,Explorer automatiquement la hiérarchie de navigation?

TopLevel1----->Level2a 
TopLevel2 |->Level2b----->Level3a----->Level4a 
      |->Level2c  

Au lieu de faire le robinet d'utilisateur « Level3a », je veux juste sauter de Level2b à Level4a, mais garder la vue Level3a dans la pile de façon lorsque l'utilisateur revient en arrière, il est visible.

Je trouve ici un code pour simuler une prise de ligne:

Simulate a Detail Disclosure Button press

Lorsque chaque niveau est chargé, je vérifie pour voir s'il n'y a qu'un seul élément en elle. Si oui, je simule le tap tap. Tout cela fonctionne initialement, et la vue finale est chargée. Mais quand je commence à faire marche arrière à travers la hiérarchie de la vue, j'ai des problèmes (il semble que les vues ignorées ne soient pas chargées).

Je pense que ce que j'essaie d'accomplir est assez simple, alors j'espère que quelqu'un ici pourra me diriger dans la bonne direction.

Répondre

0

Vous devriez pouvoir placer un appel [self.navigationController pushViewController:level4 animated:NO] dans la méthode viewWillAppear pour votre contrôleur de vue de niveau 3. Cela va automatiquement pousser le niveau 4 au dessus du niveau 3.

Si cela arrive seulement une fois, level3 peut avoir une propriété pour indiquer quand ce comportement a lieu.

+0

Merci, mais cela me donne le même résultat. En fait, en utilisant animated: NO me donne des résultats très étranges. Si je le change en animé: OUI, j'obtiens le même résultat qu'en utilisant le code tap tap simulé. Je creuse mon code pour essayer de voir ce qui se passe. – smacdonald

0

Je ne suis pas sûr à 100% que cela fonctionnerait, mais c'est ce que je ferais.

Vous pourriez directement [self.navigationController pushViewController:level4a animated:NO] et quand cela est fait, définir un nouveau tableau de viewControllers, la propriété navigationController (un tableau qui comprend Level3a).

Voici un exemple de code, en vous didSelectRowAtIndexPath:

[self.navigationController pushViewController:level4a animated:NO]; //Push the level 4 first 
NSMutableArray* mutableViewControllers = [self.navigationController.viewControllers mutableCopy]; 
[mutableViewController addObject:level3a atIndex:3]; //Add the level 3 manually 
self.navigationController.viewControllers = mutableViewControllers; 
[mutableViewControllers release];