7

Sono la creazione di una nuova pila di ViewControllers alla mia navigationController effettuando le seguenti operazioni:stile di transizione quando si utilizza setViewControllers: animato: l'UINavigationController

MainMenuViewController *mainMenuViewController = [[MainMenuViewController alloc] init]; 
NSArray *controllerArray = [NSArray arrayWithObject:mainMenuViewController]; 
[mainMenuViewController release]; 
[self.navController setViewControllers:controllerArray animated:YES]; 

L'unico problema è che non riesco a impostare la transizione stile. Idealmente mi piacerebbe che capovolga. È possibile? È importante che io usi setViewControllers: animato piuttosto che attualeModalViewController poiché passo avanti e indietro tra le pile e voglio mantenere i comportamenti di controllo della navigazione per ognuno.

risposta

0

Invece di sostituire interi stack di navigazione, perché non mantenere solo due controller di navigazione e animare una transizione tra loro? Sembra più pulito per me.

UPDATE

Credo che avrei potuto essere di una migliore assistenza se sapessi quello che stavi cercando di raggiungere, ma so che è possibile presentare una seconda modale controllore nav da un primo, e si può spingere un po 'di viste su di esso prima/dopo la presentazione, ecc. Inoltre, la sostituzione out-and-out di uno stack esistente di controller di visualizzazione, soprattutto se profondi, potrebbe confondere l'utente, per non parlare del team di revisione Apple.

Il mantenimento di due controller di nav in memoria non è necessariamente un grosso problema, purché lo abbia la memoria (probabilmente lo si fa) e fintanto che l'utente sta effettivamente beneficiando.

Forse puoi far luce sul tuo obiettivo di alto livello e possiamo andare da lì.

PIÙ

Se si vuole capovolgere, quindi è possibile impostare navController2.modalTranstitionStyle = UIModalTransitionStyleFlipHorizontal, che farà sì che navController2 per capovolgere a quando viene presentato modale.

SO aveva qualche strano problema sul tempo in cui stavamo commentando di seguito, potrebbe aver perso i tuoi aggiornamenti.

+0

Beh, stavo facendo qualcosa di simile qui: http://stackoverflow.com/questions/9570225/how-to-swap-between-2-root-view-controllers che non sembra essere stato incoraggiato. Anche se ho avuto un controller di navigazione per il quale ho reinizializzato in un nuovo rootViewController ogni volta. È buona pratica avere 2 controllori di navigazione allora? Non ti ritroverai entrambi in memoria nello stesso momento? – Smikey

+0

Aggiunto un aggiornamento – QED

+0

Si potrebbe fare questo: non penso che avere un controller nav vuoto o "corto" a portata di mano sia un grosso problema. Potresti anche provare a creare il secondo controller di navigazione su richiesta, proprio prima di presentarlo. Ciò potrebbe comportare un piccolo ritardo dell'interfaccia utente o no. Dovrai testare per vedere cosa funziona bene. – QED