我要添加第二个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()
}
答案 0 :(得分:1)
问题是您没有保留AddSecondWindowClass
对象。
您可以在triggerSecondWindowButton(sender:)
方法中创建一个变量,但是一旦函数完成,addSecondWindowClass
就不再有对其的引用,并且很快就会被销毁。销毁该对象时,您添加的窗口没有更多引用,因此也被销毁。
要解决此问题,您只需要保留对AddSecondWindowClass
的引用,只要您希望该窗口可见即可。 (也许是在类triggerSecondWindowButton(sender:)
中的一个属性或ivar)。