Swift iOS - 添加第二个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()
}

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

您在triggerSecondWindowButton(sender:)方法中创建了一个变量,但一旦函数完成,addSecondWindowClass就不再引用它,很快就会被销毁。销毁此对象时,您添加的窗口不再具有引用,因此也会销毁。

要解决这个问题,你只需要在某个地方保留对AddSecondWindowClass的引用,只要你希望窗口可见,它就会被保留。(也许作为triggerSecondWindowButton(sender:)所在的类中的属性或 ivar(。

最新更新