2012-05-30 14 views
8

È possibile far scoppiare il controller di navigazione due volte? Ho questa struttura di navigazione:È possibile far apparire UINavigationController due volte?

Vista una ----> Vedere Due -----> Visualizza Tre

Quello che mi piacerebbe realizzare è che con il rubinetto di fila su View Tre, torna direttamente a View One. L'ho fatto da tre a due via protocollo delegato, ma impostando il delegato in vista Uno non funziona e impostando due protocolli delegati consecutivi entrambi i comandi di navigazione, mi dà errore: attività del controller di navigazione nidificata (o qualcosa di simile).

Qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo!

risposta

32

C'è alcune opzioni pop

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 
  • Il primo schiocca il controller in alto.
  • Il secondo consente di estrarre l'intero stack per arrivare alla radice.
  • Il terzo consente di accedere a qualsiasi viewController a cui si fa riferimento. È possibile ottenere la viewController con self.navigationController.viewControllers e poi lavorare con l'array per ottenere il viewController specifico che si desidera pop alla
+1

Grazie, funziona come un fascino! – Marcal

4

'sé' sembra essere rilasciato dopo la prima comparsa

UINavigationController *navigationController = self.navigationController; 
[navigationController popViewControllerAnimated:NO]; 
[navigationController popViewControllerAnimated:YES]; 
10

Utilizzare il codice seguente . È possibile utilizzare qualsiasi numero invece di -3 per eseguire il pop in base alle proprie esigenze.

Il codice:?

ViewController *View = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3]; 
    [self.navigationController popToViewController:View animated:YES]; 

Swift regolatore 3.0 *

let = self.navigationController .viewControllers [(self.navigationController .viewControllers.count?)! - 3]

 self.navigationController?.popToViewController(controller!, animated: true) 
+2

Risposta migliore. ! – Xeieshan

8

Si può provare questo

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

Speranza che aiuta !!

Problemi correlati