Ho capito il mio problema. Il codice originale è effettivamente errato, dato che UINavigationController funziona e interagisce con i UIViewControllers che gestisce. (Roba Fastidiosamente come quello che ho fatto nel PO può essere trovato come una soluzione in vecchio, e quindi i messaggi.)
Ecco il codice che funziona per me (con un piccolo inconveniente):
- (void) perform {
UIViewController *src = (UIViewController *) self.sourceViewController;
UIViewController *dst = (UIViewController *) self.destinationViewController;
[UIView transitionFromView:src.view
toView:dst.view
duration:1
options:UIViewAnimationOptionTransitionFlipFromBottom
completion:nil];
[UIView transitionFromView:src.navigationItem.titleView
toView:dst.navigationItem.titleView
duration:1
options:UIViewAnimationOptionTransitionFlipFromBottom
completion:nil];
[src.navigationController pushViewController:dst animated:NO];
}
Quibble: questo sarà animare la barra di navigazione separatamente dalla vista del contenuto, in modo da avere due pezzi che girano invece dell'intero schermo. Avevo inizialmente cercato di fare:
[UIView transitionFromView:src.navigationController.view
toView:dst.navigationController.view
Ma che non riesce perché la proprietà navigationController la) della destinazione 1 non è nemmeno ancora impostato fino a quando è spinto su un controller di navigazione, e 2), anche se fosse sarei riferendo alla stessa vista! Ho dimenticato che
La vista di un controller di navigazione è solo un contenitore per diversi altre viste, tra cui una barra di navigazione, una barra degli strumenti opzionale, e la vista contenente il materiale personalizzato ... Anche se il contenuto del navigazione Visto bar e barra degli strumenti cambia, il punto di vista se stessi Do non ... l'oggetto controller di navigazione costruisce il contenuto della barra di navigazione utilizzando in modo dinamico gli elementi di navigazione (istanze della classe UINavigationItem) associati ai controller di vista sulla la pila di navigazione. Per modificare il contenuto della barra di navigazione, , è necessario configurare gli elementi di navigazione per i controlli personalizzati della vista personalizzata . (docs)
Qualcuno può spiegare perché questo è stato downvoted? – qix
Grazie mille! Il codice snipped mi ha aiutato a capire come posso animare solo la barra di navigazione durante la commutazione, ma non la commutazione della visualizzazione del contenuto – Denis