Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何定义所有视图控制器?_Ios_Swift_Hierarchy - Fatal编程技术网

Ios 如何定义所有视图控制器?

Ios 如何定义所有视图控制器?,ios,swift,hierarchy,Ios,Swift,Hierarchy,我想在用户注销并导航到loginVC时删除所有正在运行的视图控制器 我的代码: let nvcMain = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() for view in (UIApplication.shared.keyWindow?.subviews)!{ view.removeFromSuperview() } UIApplicati

我想在用户注销并导航到
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
,但我的其他ViewController仍处于打开状态。(我从调试视图层次结构中检查了它)并消耗内存。
因此,我想删除所有其他
视图控制器


有人能提供一些解决方案或建议吗?

您可以像这样使用注销选项:

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

希望这对您有所帮助。

展开序列

注销时,最好使用展开序列,这很容易实现


阅读此内容。

您不必从keywindow中删除所有ViewController/视图,我只是简单地重置了你的rootViewController,它应该完成这项工作。我也这么做了……但调试视图层次结构显示仍然是开放的。我以前从未遇到过这个问题,但我相信你一定对
ViewController
有很强的引用,这会阻止它们去初始化,这不会有任何区别。我在我的项目和工程良好。你能再解释一下吗?所以我会努力解决它。