2016-02-09 5 views
1

У меня есть карта, которая связана с несколькими viewControllers.unind segue vs. popViewControllerAnimated

мне нужно реализовать «Расслабиться» от другой кнопки (в отличие от просто кнопку назад), так что я использовал:

self.navigationController?.popViewControllerAnimated(true) 

Мой вопрос: как выше работ, я должен даже пытайся для выполнения размотки в коде с использованием prepareForUnwind и canPerformUnwindSegueAction в контроллере родительского представления + ctrl-drag из viewController для выхода в раскадровки? Если да, то почему?

ответ

3

В принципе, если вы просто dimissing представленное UIViewController или хлопнуть в UIViewController навигации стека, вам не нужно использовать размотать перетекает хотя он делает то же самое для вас.

Но думать о том случае, когда есть UINavigationControllersA, B, C, а затем RootViewControllerR

Затем подумайте о состоянии

(Present) R -> A 
(Push) AR -> XVController 
(Push)XVController -> B 
(Present)BR-> YVContoller 
...and so on.. 

Теперь, если вы хотите, чтобы вернуться к YVController к вашему проекту RootViewController, где вы только что запустили. Нет никакого способа, как popToRootViewController появится в стек навигации B UINavigationController. Теперь что вы делаете. Или используйте делегат или окно изменения RootViewController это не очень хорошая идея.

Так что вам нужно использовать разматывающий сегмент, чтобы преодолеть это. Образец project, чтобы продемонстрировать мощность его использования.