Допустим, у меня есть три контроллера вида. На первом я нажимаю кнопку и представляю второй контроллер вида модально. На втором я нажимаю кнопку и сохраняю контроллер представления представления (первый), затем устанавливаю третий контроллер представления как контроллер вида root. Наконец, у меня есть кнопка на третьем контроллере вида, которая захватывает сохраненный контроллер и устанавливает его как контроллер вида root.
Когда я восстанавливаю первый контроллер вида, я обнаруживаю, что его свойство presentedViewController
ноль. Интересно, смогу ли я сохранить стек навигации и получить модал, представленный при восстановлении первого контроллера представления?
В этом примере для простоты я храню контроллер представления внутри AppDelegate.
Код :
FirstViewController.swift
@IBAction func presentViewController(_ sender: Any) {
let storyboard = UIStoryboard(name: "SecondVC", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "Second")
present(controller, animated: true, completion: nil)
}
SecondViewController.swift
@IBAction func secondButtonCLick(_ sender: Any) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.savedVC = presentingViewController
let storyboard = UIStoryboard(name: "Third", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "ThirdVC")
UIApplication.shared.keyWindow?.rootViewController = controller
}
ThirdViewController.swift
@IBAction func thirdBtnTouch(_ sender: Any) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let rootVC = appDelegate.savedVC
UIApplication.shared.keyWindow?.rootViewController = rootVC
}