如何对所有View Controller进行dinit?

时间:2018-06-14 06:48:04

标签: ios swift hierarchy

我想在用户LogOut时删除所有正在运行的视图控制器并导航到loginVC

我的代码:

  let nvcMain = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()

    for view in (UIApplication.shared.keyWindow?.subviews)!{
        view.removeFromSuperview()
    }

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

它重定向到LoginVC但我的其他ViewControllers仍处于打开状态。(我在调试视图层次结构中检查了它)并消耗了内存。
所以我想删除所有其他viewControllers 任何人都可以提供一些解决方案或建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用以下注销选项:

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let loginVC = storyBoard.instantiateViewController(withIdentifier: "LoginVC") as! LoginVC
let nav = UINavigationController(rootViewController:loginVC)
UIApplication.shared.delegate?.window!.rootViewController = nav

希望这有用。

答案 1 :(得分:0)

展开细分

退出时,最好使用展开细分,这很容易实现。

阅读此article about unwind segues