różnica między presentViewController i UINavigationController?

Proszę odróżnić presentViewController od UiNavigationController? Czy Mogę używać presentViewController zamiast UINavigationController do poruszania się po różnych widokach w aplikacji? Jakiego scenariusza użyć?

Author: Jeff, 2013-01-09

4 answers

presentViewController oferuje mechanizm wyświetlania tak zwanego kontrolera widoku modalnego; tj. kontrolera widoku, który przejmie pełną kontrolę nad interfejsem użytkownika, nakładając się na kontroler prezentujący.

UINavigationController oferuje znacznie bardziej elastyczny mechanizm, w którym można popchnąć nowy kontroler, a później pop go, aby wrócić do poprzedniego, w uporządkowany sposób. Wyobraź sobie, że kontrolery w kontrolerze nawigacyjnym będą po prostu budować sekwencję od lewej do prawej.

Myślę, że presentViewController jest najbardziej nadaje się do użycia tylko jeden kontroler widoku jest prezentowany na raz. Możesz z pewnością użyć go do układania większej liczby kontrolerów widoku jeden na drugim (a tym samym jakby "naśladować" Kontroler nawigacyjny biednego człowieka), ale założę się, że szybko znajdziesz coś, co nie działa tak, jak się spodziewałeś.

W szczególności, przykład takiego ograniczenia jest następujący: po odrzuceniu kontrolera widoku modalnego (w celu jego "zamknięcia"), wszystkie kontrolery widoku modalnego (z ten sam prezentujący się kontroler) również zostanie od razu zwolniony. Więc po prostu nie będziesz w stanie zaimplementować funkcji "wróć"/nawigacji.

Więc to zależy od tego, co próbujesz zrobić.
 60
Author: sergio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 10:12:32

A UINavigationController jest podklasą UIViewController, która zarządza stosem kontrolerów widoku i dodaje przycisk Wstecz itp.

presentViewController jest metodą klasy UIViewController używaną do prezentacji kontrolera widoku modalnego.

 24
Author: Andrew Tetlaw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-09 10:29:48

UINavigationController utrzymuje stos nawigacji dla Ciebie. Następnie możesz poruszać się po hierarchicznej treści.

Http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

Jeśli używasz UIViewControllers presentViewController Metoda w zasadzie tylko zastępujesz kontroler widoku. żaden stos nawigacji nie jest utrzymywany dla Ciebie.

 5
Author: mgr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-04 13:48:40

Uinavigationcontroller jest klasą, presentViewController jest metodą instancyjną UIViewController( iOS 5+), której UINavigationController jest podklasą.

PushViewController jest metodą porównywalną do presentViewController. Jest to metoda instancji UINavigationController, dla iOS 2 +

 2
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-09 10:26:08