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
有很强的引用,这会阻止它们去初始化,这不会有任何区别。我在我的项目和工程良好。你能再解释一下吗?所以我会努力解决它。