2016-04-27 1 views
0

J'ai un firstViewController intégré dans un firstNavigationController qui a une liaison modale à un nouveau secondViewController intégré dans un autre secondNavigationController. Ce nouveau contrôleur effectue une Segue dérouleur Retour à la firstViewControllerUnwind Segue remonte trop loin

secondViewController:

- (void) cancelAction{ 
    [self performSegueWithIdentifier:@"backHoney" sender:self]; 
} 

firstViewController:

- (IBAction)backToHoney:(UIStoryboardSegue *)sender{ 
} 

Cela fonctionne, mais il y a un cas où une autre viewC incorporé dans un Nav a une liaison modale au firstViewController. Lorsque l'utilisateur passe de viewC à firstViewController puis à secondViewController et essaie de se détendre à la première, il se déroule à viewC au lieu de la première.

Répondre

0

vous devez utiliser popToviewController au lieu de désengorger segue. vous pouvez aller à n'importe quel viewController de la pile de navigation par ceci.

par exemple,

NSArray *viewArr = [self.navigationController viewControllers]; //returs viewcontroller array 
[self.navigationController popToViewController:[viewArr objectAtIndex:0] animated:YES]; 
//you can pass different index to go to differen VC 

Vous pouvez consulter mon this answer pour plus de détails.

J'espère que cela aidera :)

+0

J'ai besoin de se détendre de 'secondNavController'' firstNavController'. Passant également des données. N'est-ce pas juste pour naviguer sur tous les viewControllers dans le même NavController? @Lion – Peter

+0

vous pouvez utiliser le délégué et le protocole pour transmettre les données. il n'y a rien d'obligatoire à utiliser se dérouler segue. – Lion