navigationController? .setViewControllers работает отложено в методе viewDidAppear - PullRequest
0 голосов
/ 12 апреля 2019

navigationController?.setViewControllers работает с задержкой в ​​override func viewDidAppear(, при других обстоятельствах работает нормально.

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    print(self.navigationController?.children)
    print(self.navigationController?.viewControllers)
    var array = self.navigationController?.children
    array!.insert(ViewController(), at: array!.count - 1)
    navigationController?.setViewControllers(array!, animated: false)
    print(self.navigationController?.viewControllers)
}

Он печатает:

Optional([<One.ViewController: 0x7f9a1b4021e0>, <One.TwoViewController: 0x7f9a1b40e320>])
Optional([<One.ViewController: 0x7f9a1b4021e0>, <One.TwoViewController: 0x7f9a1b40e320>])
Optional([<One.ViewController: 0x7f9a1b4021e0>, <One.TwoViewController: 0x7f9a1b40e320>])

при других обстоятельствах работает нормально. как нажатие кнопки.

@IBAction func back(_ sender: Any) {
    print(self.navigationController?.children)
    print(self.navigationController?.viewControllers)
    var array = self.navigationController?.children
    array!.insert(ViewController(), at: array!.count - 1)
    navigationController?.setViewControllers(array!, animated: false)
    print(self.navigationController?.viewControllers)
}


Optional([<One.ViewController: 0x7f9a1b4021e0>, <One.ViewController: 0x7f9a1b520dc0>, <One.TwoViewController: 0x7f9a1b40e320>])
Optional([<One.ViewController: 0x7f9a1b4021e0>, <One.ViewController: 0x7f9a1b520dc0>, <One.TwoViewController: 0x7f9a1b40e320>])
Optional([<One.ViewController: 0x7f9a1b4021e0>, <One.ViewController: 0x7f9a1b520dc0>, <One.ViewController: 0x7f9a1b40cd10>, <One.TwoViewController: 0x7f9a1b40e320>])

Работает как положено.

Два метода работали один за другим.

Я думаю navigationController?.setViewControllers работает в override func viewDidAppear(, немного задерживается.

Что такое маханизм?

...