Swift 3 - addChildViewController на UIWindow другого контроллера представления

Я должен добавить второй вид контроллера представления на UIWindow первого контроллера представления, используя addChildViewController, но у меня возникает проблема, когда я пытаюсь это сделать. Мой запрос, можно добавить, что другой вид контроллера представления на UIWindow?

    secondVC = (self.storyboard?.instantiateViewController(withIdentifier: "secondVC"))!
    self.addChildViewController(secondVC)
    self.didMove(toParentViewController: self)
    draw.view.frame = CGRect(x:0, y:0, 320, 568)

    let window = UIApplication.shared.keyWindow
    window?.addSubview(secondVC.view)

1 ответ

Что ж, возможно, вам следует создать экземпляр корневого VC, а затем добавить второй VC в первый VC вашего приложения. Например, вы можете написать что-то вроде этого:

//init the storyboard
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
//init the firstVC
let navigation = storyboard.instantiateInitialViewController() as! UINavigationController
let firstVC = navigation.viewControllers[0]
//init the second VC
let secondVC = (self.storyboard?.instantiateViewController(withIdentifier: "secondVC"))!
//add child VC
firstVC.addChildViewController(secondVC)
secondVC.view.frame = firstVC.view.bounds
self.view.addSubview(controller.view)
secondVC.didMove(toParentViewController: self)

Это связано с тем, что с главным окном связан корневой VC. Ключевое окно имеет начальный контроллер вида с главной раскадровки.

Другие вопросы по тегам