我的应用程序会启动一个初始视图控制器(我们称其为StartVC)。现在,当用户按下一个继续按钮时,我会在StartVC之上呈现一个导航栈(我们称其为RegisterVC)。每当用户通过按钮操作向前移动时,我都会将5个视图控制器推送到该导航栈中。在第5个视图控制器之后,我会启动一个新的导航栈(我们称其为LoginVC)。
现在我的使用情况是:一旦用户完成注册,我就不希望StartVC和RegisterVC存储在内存中,因为它们没有任何用处。为了实现这一点,我正在更改AppDelegate窗口的根视图控制器为LoginVC 以下是我尝试过的RegisterVC的第五个视图控制器的选项:
1)更改keywindow
现在我的使用情况是:一旦用户完成注册,我就不希望StartVC和RegisterVC存储在内存中,因为它们没有任何用处。为了实现这一点,我正在更改AppDelegate窗口的根视图控制器为LoginVC 以下是我尝试过的RegisterVC的第五个视图控制器的选项:
1)更改keywindow
UIApplication.shared.keyWindow?.rootViewController = LoginVC
UIApplication.shared.keyWindow?.makeKeyAndVisible()
2) 更改窗口
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = LoginVC
appDelegate.window?.makeKeyAndVisible()
3) 在分配新的根视图控制器之前,将先前的根视图控制器设置为nil。
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = nil
appDelegate.window?.rootViewController = LoginVC
appDelegate.window?.makeKeyAndVisible()
4) 我还尝试了从AppDelegate直接执行上述选项,而不是从第5个视图控制器中执行。
在尝试了以上所有选项后,我尝试通过查看所有视图控制器的 deinit 来进行调试,但它们都没有被销毁。另外,我可以在 xcode Debug View Hierarchy 中看到LoginVC下的第五个视图控制器。
由于没有将它们从内存中删除,我遇到的实际问题是,在展示LoginVC之后,我的一个视图控制器的背景颜色透明度较低。因此,我看到了位于其下方的RegisterVC第五个视图控制器。
如果有任何帮助,将不胜感激...