gpt4 book ai didi

ios - Swift iOS - 添加第二个 UIWindow 不会出现

转载 作者:可可西里 更新时间:2023-11-01 01:08:41 25 4
gpt4 key购买 nike

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

关于ios - Swift iOS - 添加第二个 UIWindow 不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com