2013-05-01 15 views
11

Ho un controller di visualizzazione B che viene inserito nello stack di navigazione dal controller di visualizzazione radice A e questo controller di visualizzazione B deve visualizzare una vista alternativa se il suo il modello si trova in un determinato stato quindi presenta modalmente un altro controller di vista C. Quando ignoro il controller di visualizzazione, vorrei anche far scattare il controller di visualizzazione B se questo è anche nello stack nav. Mi piacerebbe farlo in modo tale che ci sia solo una transizione.ios: come eliminare un controller di visualizzazione modale e quindi inserire un controller di visualizzazione spinto

Qualche idea?

+0

Stai usando xibs o storyboard per impaginare le tue visualizzazioni? Sembra che la tua migliore possibilità sia quella di istanziare le visualizzazioni terziarie all'interno del tuo controller di visualizzazione radice, e quindi aggiungerle come subviews. Questi possono quindi essere mostrati o nascosti. Questo può essere molto più flessibile rispetto alla presentazione e alla revoca delle visualizzazioni modali. – ninehundredt

+0

Im usando uno storyboard, ero propenso ad usare un viewcontroller separato per visualizzare lo stato alternativo perché la documentazione di apple diceva che se si dispone di un'interfaccia alternativa da visualizzare allora vale la pena presentarla come una vista separata (lo menzionava nella discussione di viste panoramiche separate). Penso che i cambiamenti effettivi dell'interfaccia utente che ho bisogno siano più facili da implementare tramite una vista separata che viene visualizzata nella vista corrente, quindi proverò il tuo suggerimento – Heisenberg

risposta

18

Nello scenario che hai postato, il controller della vista di presentazione per il controller di visualizzazione C sarà in realtà il controller di navigazione, quindi puoi chiedere a pop-up B, e quindi allontanarti. Questo codice è in vista del regolatore C:

-(IBAction)goBackToA:(id)sender { 
    [(UINavigationController *)self.presentingViewController popViewControllerAnimated:NO]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Se si utilizza uno storyboard, si può fare la stessa cosa, saltare direttamente ad A con una segue rilassarsi.

+0

grazie, dopo aver pensato che penso che ciò di cui ho bisogno potrebbe essere fatto più facilmente usando solo un controller vista e cambiando le sue subviews in base allo stato del modello, proverò il tuo approccio se ho bisogno di utilizzare 2 controller di vista separati – Heisenberg

+0

Esattamente quello che mi serviva! – Nerrolken

Problemi correlati