取消初始化呈现的视图控制器
Deinitialize presented view controller
我有下一个功能
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())
UIViewController
个对象在另一个 UIViewController
呈现时被保留。要释放你的视图控制器,它们需要从视图层次结构中移除,你可以通过关闭它们来完成。至于在哪里关闭您的视图控制器,我不确定,因为您没有提供足够的信息。但是你需要关闭任何你想从内存中释放的视图控制器。
我有下一个功能
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())
UIViewController
个对象在另一个 UIViewController
呈现时被保留。要释放你的视图控制器,它们需要从视图层次结构中移除,你可以通过关闭它们来完成。至于在哪里关闭您的视图控制器,我不确定,因为您没有提供足够的信息。但是你需要关闭任何你想从内存中释放的视图控制器。