Swift iOS - 添加第二个 UIWindow 没有出现

Swift iOS -Adding second UIWindow doesn't appear

我要将第二个 UIWindow 添加到我的应用程序中。当我添加它时 window 短暂显示然后突然消失。它可能会显示十分之一秒,然后就消失了。我哪里出错了?

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")
    }
}

一个不同的 class,带有一个显示 window

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

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

您在 triggerSecondWindowButton(sender:) 方法中创建了一个变量,但是一旦函数完成,addSecondWindowClass 就没有更多的引用并很快被销毁。当这个对象被销毁时,你添加的 window 没有更多的引用所以也被销毁。

要解决这个问题,您只需在某个地方保留对 AddSecondWindowClass 的引用,只要您希望 window 可见,它就会一直存在。 (也许作为 属性 或 class 中的 ivar triggerSecondWindowButton(sender:) 是在)。