2013-08-05 2 views
0

J'ai 4 vues.Action du bouton Précédent des vues UINavigation?

1er est rootView puis View1, View2 & View3.
Il fonctionne selon rootView-> View1-> View2-> View3.

Je dois sauter de View1 à View3 mais quand j'utilise le bouton de retour de View3, il apparaît à View2. Si j'utiliser le code suivant

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES]; 

il ne fonctionne pas la cause de l'indexation, à ce moment-View3 a une valeur d'index 2 quand je pousse le View3 de Vue 1.

Ainsi est-il une autre méthode de pop View2 de View3 en utilisant le bouton de retour?

+0

Il est pas clair ce que vous voulez passer de View1 à View3 a besoin de pousser ou de pop View2 des besoins View3 POPING. –

Répondre

0

Créer une nouvelle classe MYViewController : UIViewController avec initWithBackButton:(UIBarButtonItem *)backButton;

@property (nonatomic, strong) UIBarButtonItem *saveBackButton 

- (id)initWithBackButton:(UIBarButtonItem *)backButton { 

    self = [super init]; 

    if(self){ 
     self.saveBackButton = backButton; 
    } 
    return self; 
} 

dans la racine

Créer 3 propriété VC1, VC2, vc3;

lorsque vous créez MYViewController

{ 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(0, 0, width, height); 
    [button addTarget:self action:@selector(iWantToOpenNumber2:) forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

    self.vc3 = [[MYViewController alloc] initWithBackButton:backItem]; 
} 

- (void)iWantToOpenNumber2:(id)sender { 
    [self dismissViewControllerAnimated: YES completion: ^{ 
     [self presentViewController:self.vc2 animated: YES completion:^{}]; 
    }]; 

} 
-1
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:NO]; 

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES]; 
+0

Pouvez-vous s'il vous plaît dites-moi ce que cela va faire ??? –

+0

ouvrir View2 sans animation et View3 avec animation; quand vous appuyez sur le bouton retour view3 sera fermé et view2 sera sur la fenêtre –

+0

désolé .. mais ce n'est pas la chose que je demande. parce que j'ai déjà dit à propos de cette méthode que ce qu'il fait, ci-dessus dans ma question .. de toute façon merci –

0

Importer le View1 dans view3 créer alors une instance pour View1 coller ce code

UIViewController *view1Reference = [[UIViewController alloc] init]; 
[self.navigationController popToViewController:view1Reference animated:YES]; 
+0

non .. Ce ne fonctionne pas aussi. –

+0

utilisez-vous le story-board? – iosLearner

+0

puis utilisez le bouton de retour personnalisé, appelez une action de ce bouton et dans cette action utilisez ce code .. – iosLearner

0

via le bouton de retour. (Pour l'indice spécifique)

NSArray *array = [self.navigationController viewControllers]; 
[self.navigationController popToViewController:[array objectAtIndex:2] animated:NO]; 

(pour une vue précédente)

[self.navigationController popViewControllerAnimated:YES]; 
Questions connexes