Wyobraziłem sobie mój problem. Oryginalny kod jest rzeczywiście nieprawidłowy, biorąc pod uwagę sposób działania kontrolera UINavigationController i współdziałając z kontrolkami UIViewControl, którymi zarządza. (Nieznośno rzeczy, jak to, co zrobiłem w PO można znaleźć w postaci roztworu w starszych SO stanowisk).
Oto kod, który pracuje dla mnie (z jednym drobne zastrzeżenie):
- (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];
}
zastrzeżenie: to będzie animuj pasek nawigacyjny niezależnie od widoku zawartości, dzięki czemu masz dwa elementy przewracające się zamiast całego ekranu. Miałem pierwotnie próbował zrobić:
[UIView transitionFromView:src.navigationController.view
toView:dst.navigationController.view
Ale to nie działa, ponieważ nieruchomość navigationController W 1) Cel nie jest nawet jeszcze ustawiony dopóki nie zostanie wciśnięty na kontrolerze nav, i 2), nawet gdyby było, że będę nawiązując do tego samego widoku! Zapomniałem, że
Widok na kontrolerze nawigacji jest tylko kontenerem dla kilku innych poglądów, w tym pasku nawigacyjnym, opcjonalny pasek narzędzi, a widok zawierającej treści niestandardowy ... Chociaż treść pasek nawigacji i widoki widoku paska narzędzi zmieniają się, widoki same w sobie robią nie ... obiekt kontrolera nawigacji dynamicznie buduje zawartość paska nawigacyjnego dynamicznie za pomocą elementów nawigacyjnych (wystąpienia klasyklasy UINavigationItem) skojarzonych z kontrolkami widoku na stos nawigacyjny. Aby zmienić zawartość paska nawigacji, należy zatem skonfigurować elementy nawigacji dla niestandardowych kontrolerów widoku . (docs)
Czy ktoś może wyjaśnić, dlaczego została wycofana? – qix
Wielkie dzięki! Twój snipowany kod pomógł mi dowiedzieć się, jak mogę animować tylko przełączanie paska nawigacyjnego podczas push, ale nie przełączanie widoku zawartości – Denis