2017-02-13 15 views
0

КонтекстSwift Как использовать смещать вид контроллера правильно/Как сделать кнопку назад 3 Просмотр контроллеров

у меня есть 3 контроллеров представления. A открывает B, который открывает C. У меня есть кнопка возврата в B и C. Я хочу, чтобы обратные кнопки переходили из C -> B и из B -> A без перезагрузки контроллера вида. Я попробовал выключить контроллер просмотра.

Проблема

, если я иду в B, чем C и освобождает от должности C оно восходит к B, но затем, если я распускать В это восходит к C, а не к

A -> B -> C -> back -> B -> back -> C 

Should be: A -> B -> C -> back -> B -> back -> A 

кодекса

в а, в и с:

@IBAction func backButton(_ sender: Any) { 
    dismiss(animated: true) 
} 
+1

Вы используете 'UINavigationController' для обрабатывать переход и жизненный цикл? –

+0

@toiavalle Вы должны использовать popViewController в такой ситуации. Контроллеры добавляются друг к другу в виде стека, если вы использовали UINavigationController. Если вы. Попробуем убрать диспетчер, а затем пример (A-B-C) отпустите C, он возвращается, и B на вершине, так что он все еще находится ниже C. Так вы возвращаетесь на C вместо A. –

+0

Я бы порекомендовал использовать размотку segue. – PeejWeej

ответ

1

Используйте UINavigationController и pushUIViewControllers вместо обработки навигации самостоятельно. UINavigationController будет обрабатывать правильное поведение кнопки возврата (нет необходимости в IBAction)

E.g. реализовать подобное н в вашем ViewController-A:

@IBAction func showB() { 
    navigationController?.pushViewController(viewControllerB, animated: true) 
} 

И Встроить ViewController-А как rootViewController в экземпляре UINavigationController в раскадровку или программно, как этот

let viewControllerA = ViewControllerA() // or instantiate from storyboard 
let masterNavigationController = UINavigationController(rootViewController: viewControllerA) 
+0

Большое спасибо @MarkHim. Должен ли я использовать несколько VC в одном и том же NC или одном NC для каждого VC? Как подключить несколько VC к одному и тому же NC в StoryBoard? – toiavalle

+1

@toiavalle соединяется с первым контроллером. Затем используйте segue для останова. –