8

diciamo qui è il mio layout pilaUINavigationController: Come faccio ad eliminare una vista di una pila

View3  --> Top of the stack 
View2 
View1 
HomeView --> Bottom of the stack 

Quindi io sono in View3 ora, se si fa clic sul pulsante di Home, voglio caricare HomeView, il che significa che Devo far apparire View3, View2 e View1. Ma se faccio scoppiare View3, verrà visualizzato View2. Non lo voglio Desidero rimuovere View3, View2 e View1 e verrà visualizzato HomeView. Qualche idea su come?

risposta

16

È possibile utilizzare popToRootViewControllerAnimated: per arrivare alla radice viewcontroller. Ciò farebbe apparire tutti i controller di visualizzazione nello stack ad eccezione del controller di visualizzazione radice. Nel tuo caso, questo sarebbe il HomeView.

[self popToRootViewControllerAnimated:YES]; 


per arrivare a una vista specifica nello stack, è possibile utilizzare popToViewController:animated: Supponendo che si desidera pop terzo viewcontroller (dal basso verso l'alto). Nel tuo caso, questo sarebbe view2:

NSArray* viewControllersInStack = self.navigationController.viewControllers; 
UIViewController* targetViewController = [viewControllersInStack objectAtIndex:2]; 
[self.navigationController popToViewController:targetViewController animated:YES]; 
+0

Ho l'homeview come root nell'esempio, ma non è il caso nel mio codice. TYVM :) –

+0

Lo provo, ma ha detto che 'HomeView' non è definito, il che ha senso dato che sono in' View3' quindi non ho riferimenti a 'HomeView', giusto? –

+0

Sì, è necessario un riferimento a 'HomeView', ed è possibile ottenerlo tramite la proprietà' self.navigationController.viewControllers' –

2

Usa popToViewController

[self.navigationController popToViewController:homeView animated:YES]; 
+0

Come funziona? La documentazione diceva che si apriva un viewController specifico, ma continuavo ad avere problemi di seg. Pensi che puoi darmi un rapido codice di esempio? –

+0

Apre la visualizzazione fino a quando lo specifico viewController si trova in cima allo stack. Puoi pubblicare anche un log degli errori e parte del tuo codice? – Bird

+0

Bene, diciamo che sono in 'aViewController' (si presume che sia già in pila), spingo' bViewController', quindi in 'bViewController', I' popToViewController: aViewController', ma detto 'aViewController' non è definito , che ha senso dato che ora sono in 'bViewController'. Non ho riferimenti a 'aViewController'. Mi sto perdendo qualcosa? –

0

uso ...

[self.navigationController popToRootViewControllerAnimated: YES];

Problemi correlati