2012-02-25 16 views
22

Ho un controller di navigazione con un controller di visualizzazione che visualizza un pulsante. Il pulsante è collegato a un altro controller di visualizzazione mediante un comando push che aggiunge automaticamente una barra di navigazione superiore con un pulsante indietro. Tutto funziona bene. Premendo il pulsante Indietro scorre la 2a vista e torna al 1 °.Ignora visualizzazione spinta dall'interno del controller di navigazione

Ho un pulsante sul 2 ° View Controller, che quando viene premuto esegue un codice e una chiamata delegata al 1 ° View Controller. Anche questo funziona bene.

Ora ho solo bisogno di chiudere la seconda vista dal codice come se fosse stato premuto il pulsante Indietro. Ho provato a usare dismissModalViewCcontrollerAnimated e dismissViewControllerAnimated, tuttavia entrambi ignorano l'intero Navigation Controller che rimuove la vista 2 e 1 (restituendo bak al mio menu principale).

Che cosa è il modo corretto di far scorrere la vista.

+0

Puoi pubblicare il codice utilizzato per testare? – sch

risposta

36

ottenere un riferimento al vostro UINavigationController e chiamare

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 

su di esso.

+7

Grazie. Questo mi ha messo sulla strada giusta per una rapida ricerca su Google. Questo ha funzionato [self.navigationController popViewControllerAnimated: YES]; – Darren

9

In Swift sarebbe chiamando il metodo

self.navigationController?.popViewControllerAnimated(true) 
2

In rapida è inoltre possibile chiamare:

self.navigationController?.popToRootViewControllerAnimated(true) 
1

On Objective-C è

[self.navigationController popViewControllerAnimated:YES]; 

per un salto al primo controller root

[self.navigationController popToRootViewControllerAnimated:YES]; 

o è una possibile mossa al controllore specifico

[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)]; 

animazione specifico processo di animazione di spostare il controllore. Se l'animazione è false, il controller apparirà senza animazioni. Il UIViewController deve essere di uno che è in pila.

2

Se usiamo spinta segue, quindi utilizzare popViewController

@IBAction func backButtonClicked(_ sender: Any) { 
    self.navigationController?.popViewController(animated: false) 
} 
Problemi correlati