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:)
是在)。
我要将第二个 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:)
是在)。