2013-08-14 10 views
9

Su un controller di visualizzazione, ho un pulsante che presenterà un altro controller di visualizzazione. Dal secondo controller di visualizzazione, posso passare ad altri controller di visualizzazione, ma non necessariamente a quello che mi ha portato qui. Se questo è il caso, come posso rimuovere il controller di visualizzazione originale?iPhone - Rimozione di un controller di visualizzazione presentato

+0

potete inserire codice come a ciò che avete provato finora. Inoltre, cosa stai usando per caricare il controller di visualizzazione. È UINavigationController? Hai provato a scattare il controller di visualizzazione? –

+0

sembra una domanda per me ... per favore incolla un po 'di codice che hai provato finora ... –

+0

Se uso useViewController o popViewController, nessuno di questi mi porterà al controller di visualizzazione originale? Sto cercando un modo, se possibile, di ignorare il controller di visualizzazione iniziale. – Carmichael

risposta

25

La tua descrizione è un po 'poco chiaro qui. Ci potrebbero essere 3 casi diverso qui:

  1. si muove attraverso la navigazione gerarchia di controllo
  2. Scoppio di gerarchia controller di navigazione a un altro controller di vista
  3. Solo l'aggiunta di un altro controller vista corrente nella navigazione pila regolatore

Nel primo caso è possibile utilizzare metodi di UINavigationController:

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 

e utilizzare la proprietà viewControllers per spostarsi nello stack.

Ina seconda, se si vuole uscire la gerarchia ad uno completamente un altro controller vista, poi semplicemente farlo da:

[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil]; 
[[UIApplication sharedApplication] keyWindow].rootViewController = newController; 

o meglio ancora: aggiungi seconda linea in blocco il completamento della prima linea.

O nel terzo caso, se si desidera solo fare un'eccezione, ma per il resto rimanere in pila controller di navigazione, quindi utilizzare metodi:

- (void)addChildViewController:(UIViewController *)childController 
- (void)removeFromParentViewController 
17

Dipende da come è stato effettivamente presentato il controller di visualizzazione corrente. Se era modale, quindi

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

Se è stato spinto con un controller di navigazione:

[self.navigationController popViewControllerAnimated:YES]; 
Problemi correlati