Swift iOS-未出现添加第二个UIWindow

时间:2018-06-26 02:05:24

标签: ios swift uiwindow

我要添加第二个UIWindow。当我添加它时,窗口会短暂显示,然后突然消失。它可能会显示十分之一秒,然后又消失了。我在哪里错了?

class AddSecondWindowClass: NSObject {

    let redVC = RedController()
    var window: UIWindow?

    func showSecondWindow() {

        let navVC = UINavigationController(rootViewController: redVC)
        navVC.navigationBar.isHidden = true
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.backgroundColor = .white
        window?.windowLevel = UIWindowLevelStatusBar
        window?.rootViewController = navVC
        window?.isHidden = false
        window?.makeKeyAndVisible()
    }
}

class RedController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .red
    }

    deinit {
        print("RedVC -DEINIT")
    }
}

另一个带有显示窗口的按钮的类

@IBAction func triggerSecondWindowButton(_ sender: UIButton) {
    let addSecondWindowClass = AddSecondWindowClass()
    addSecondWindowClass.showSecondWindow()
}

1 个答案:

答案 0 :(得分:1)

问题是您没有保留AddSecondWindowClass对象。

您可以在triggerSecondWindowButton(sender:)方法中创建一个变量,但是一旦函数完成,addSecondWindowClass就不再有对其的引用,并且很快就会被销毁。销毁该对象时,您添加的窗口没有更多引用,因此也被销毁。

要解决此问题,您只需要保留对AddSecondWindowClass的引用,只要您希望该窗口可见即可。 (也许是在类triggerSecondWindowButton(sender:)中的一个属性或ivar)。