Управляемая навигация встроена в Контейнер - PullRequest
0 голосов
/ 06 октября 2018

У меня есть UIContainerView, внутри которого у меня есть UINavigationController и другие VC, встроенные в UINavigationController (7 из них).

Итак, это выглядит так: Screenshot of app

На этих 7 экранах внутри UINavigationController я вызываю всплывающий экран, который затем следует перенаправить на другой экран, из которого пользователь может выполнить обратный переход к вызову всплывающего окна VC.

Итак, путешествие пользователя внутри UINavigationController будет выглядеть так: Открыт VC1 (2,3,5,6,7) -> ВызываетсяВсплывающее VC -> Нажатая кнопка -> Открытое VC4 -> Нажатая навигационная кнопка возврата -> Возврат к VC1.

Вот мой код:

@IBAction func didPressAuthors(_ sender: UIButton) {
    self.dismiss(animated: true) {

        if let navigation = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController {
            let vc1 = self.storyboard!.instantiateViewController(withIdentifier: "FirstVC")
            let vc2 = self.storyboard!.instantiateViewController(withIdentifier: "SecondVC")
            let vc3 = self.storyboard!.instantiateViewController(withIdentifier: "ThirdVC")
            let vc4 = self.storyboard!.instantiateViewController(withIdentifier: "FourthVC")
            let vc5 = self.storyboard!.instantiateViewController(withIdentifier: "FifthVC")
            let finalVC = self.storyboard!.instantiateViewController(withIdentifier: "Authors")
            let userJourney = self.defaults.array(forKey: DefaultKeys.screenID.rawValue)

            for vcName in userJourney! {
                switch String(describing: vcName) {
                case "FirstVC":
                    self.journeyVC.append(vc1)
                case "SecondVC":
                    self.journeyVC.append(vc2)
                case "ThirdVC":
                    self.journeyVC.append(vc3)
                case "FourthVC":
                    self.journeyVC.append(vc4)
                case "FifthVC":
                    self.journeyVC.append(vc5)
                default:
                    self.journeyVC.append(finalVC)
                }
            }
            self.journeyVC.append(finalVC)
            navigation.setViewControllers(self.journeyVC, animated: true)
        }
    }
}

Проблема:

Когда у меня не было UINavigationController внутри UIContainerView, этот код работал нормально, но после добавления Container View - он остановился.Увольняют func, но ничего не происходит.Что мне не хватает?Должен ли я изменить способ представления VC?

Буду признателен, если кто-нибудь поможет мне решить эту проблему.Большое спасибо и хороших выходных!

1 Ответ

0 голосов
/ 06 октября 2018

Ваш текущий корень - это не навигация здесь

if let navigation = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController {

это обычный VC, который навигация вставляется как дочерний, поэтому попробуйте

if let root = UIApplication.shared.keyWindow?.rootViewController as? RootVC {
let nav = root.children![0] as! UINavigationController  
...