取消初始化显示的视图控制器

问题描述 投票:0回答:1

我有下一个功能

func switchRootViewController(rootViewController: UIViewController) {
    let window = UIApplication.shared.windows.first!
    window.rootViewController = rootViewController
    window.makeKeyAndVisible()
}

我在一个呈现的视图控制器中使用它,例如在PresentedViewController中。

let navigationViewController = UINavigationController(rootViewController: PresentedViewController())
present(navigationViewController, animated: true, completion: nil)

但是当我切换到所需的视图控制器时,我呈现的视图控制器不会取消初始化。我必须用这种方式,首先解雇:

self.dismiss(animated: true, completion: {
    switchRootViewController(rootViewController: HomeViewController.instantiate())
}) 

而不是简单

switchRootViewController(rootViewController: HomeViewController.instantiate())
swift uiviewcontroller presentviewcontroller deinit
1个回答
0
投票

当另一个UIViewController呈现时,UIViewController对象被保留。要释放视图控制器,需要从视图层次结构中删除它们,您可以通过解除它们来完成它们。至于解雇你的视图控制器的地方,我不确定,因为你没有提供足够的信息。但是您需要关闭要从内存中释放的任何视图控制器。

© www.soinside.com 2019 - 2024. All rights reserved.