【问题标题】:What happens to the previous window if I create a new window and makeKeyAndVisible如果我创建一个新窗口并 makeKeyAndVisible,前一个窗口会发生什么
【发布时间】:2019-04-30 00:39:54
【问题描述】:

我正在尝试注销并返回登录视图控制器。

所以我创建了一个窗口,设置 rootViewController,然后 makeKeyAndVisible。 (不在 AppDelegate 中)

class AppManager: NSObject {
var window: UIWindow?

func goToLoginPage() {
    window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let loginVC = storyboard.instantiateViewController(withIdentifier: 
    "LoginVC") as! LoginVC
    window?.rootViewController = loginVC
    window?.makeKeyAndVisible()
}

}

它有效,但我在想前一个窗口会发生什么。它会自动关闭和释放吗?如果没有,我需要这样做吗?

还是直接使用“UIApplication.shared.delegate?.window!!”更好像下面这样而不是创建一个新窗口?

UIApplication.shared.delegate?.window!!.rootViewController = homeVC

【问题讨论】:

  • 显示第一组代码中window 变量的来源。
  • 我在类中创建了一个变量,如下所示“var window: UIWindow?”
  • 你在哪里实际将 UIWindow 实例分配给 window 变量?
  • 抱歉,我已经更新了代码。
  • 最好不要那样做。如果只有一个屏幕,您只需要一个 UIWindow。如果问题是一次性登录页面,有更好的方法来解决。

标签: ios swift


【解决方案1】:

您可以从AppDelegate获取现有窗口并更改rootViewControlller

if let appDelegate = UIApplication.shared.delegate as? AppDelegate, let window = appDelegate.window {
    window.rootViewController = loginVC
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多