2011-11-09 1 views
0

Je suis nouveau sur les applications iPhone, j'ai un problème avec le contrôleur de navigation en mode push et pop, par exemple j'ai trois vues, respectivement A, B et C , en ce que je vais (pousser) à A -> B -> C et aussi à venir retour (pop) C -> B -> A son fonctionnement.Pousser et sauter dans le contrôleur de navigation?

cas 1: Maintenant, mon exigence est que suit A-> C alors je dois passer de C-> B alors comment puis-je faire cela? dans ce cas j'utilise push (ça marche).

cas 2: Mais quand je vais A-> B-> C et revenant de C-> B je dois utiliser pop PAS Push. Alors, comment peut utiliser les opérations Push et pop dans case1 sand case2. Maintenant j'écris de la façon suivante.

// A-->C and C-->B or if [self.navigationController.viewControllers objectAtIndex:0] 

J'ai utilisé ce code:

CategoryClass *class=[[CategoryClass alloc]initWithNibName:@"CategoryClass" bundle:nil];  
    [self.navigationController pushViewController:class animated:YES]; 

    // A-->B-->C(push) for back C-->B or if [self.navigationController.viewControllers objectAtIndex:1] i want to use this code 
    [self.navigationController popViewControllerAnimated:YES]; 

Comment puis-je comparer si le objectAtIndex:0 et objectAtIndex:1

+2

Pourquoi le tout est-il dans un blockquote? – BoltClock

Répondre

0

Regardez mon exemple: (lire les commentaires =))

UINavigationController *navController; 
UIViewController *viewControllerA, *viewControllerB, *viewControllerC; 
[navController pushViewController:viewControllerA animated:YES]; // -> A 
// some time passed 
NSArray *currentViewControllers = [navController viewControllers]; // <- on stack now 
NSMutableArray *newStack = [NSMutableArray arrayWithArray:currentViewControllers]; 
[newStack addObject:viewControllerB]; // <- adding B 
[newStack addObject:viewControllerC]; // <- adding C 
[navController setViewControllers:newStack animated:YES]; // <- setting new view controllers stack: A, B, C 

// returning to B: pop viewControllerC 
[navController popViewControllerAnimated:YES]; 
// or 
[navController popToViewController:viewControllerB animated:YES]; 
1
NSMutableArray *views=[NSMutableArray arrayWithArray:self.navigationController.viewControllers]; 
[views removeObjectAtIndex:[views count]-2]; 
self.navigationController.viewControllers=views; 
[self.navigationController popViewControllerAnimated:YES]; 

essayer ce changement la valeur au lieu de 2 je pense que cela vous aidera

Supprimer les valeurs de la pile et de passer à la page que vous voulez .......

merci .....

0

nous vous souhaitons la bienvenue, ce ne est pas un problème que vous êtes nouveau, nous sommes ici pour yu guider avec une solution appropriée, si cher, tout d'abord faire quelques changements dans le fichier appdelegate qui est:

storyboardName = [AppHelper isPhone] ? @"Main_iPhone" : @"Main_iPad"; 
storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil]; 
navController = (UINavigationController*)[storyboard instantiateInitialViewController]; 


    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil]; 
    MainMenu *controller = (MainMenu*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MainMenuiphone"]; 
    [navigationController pushViewController:controller animated:NO]; 
    self.window.rootViewController = navigationController; 

et après qui utilisent ce code pour pousser des vues:

ANYVIEWCONTROLLER *view = [self.storyboard instantiateViewControllerWithIdentifier:@"ANYVIEWZID"]; 
[ [self navigationController] pushViewController:view animated:YES]; 
Questions connexes