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

时间:2019-03-06 16:44:11

标签: swift uiviewcontroller presentviewcontroller deinit

我有下一个功能

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

我在PresentedViewController中使用它,例如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())

1 个答案:

答案 0 :(得分:0)

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