我们希望改变用户退出应用的方式。为了做到这一点,我们想要解除当前VC下面的所有VC,并将另一个VC作为根VC放在最顶层。现在我们正在这样做,我相信不会从记忆中解雇任何VC。
let viewController = storyboard?.instantiateViewController(withIdentifier: "SignIn")
if let unwrappedViewController = viewController {
self.present(unwrappedViewController, animated: true, completion: {})
}
问题是我们想要放在顶部的VC没有嵌入导航控制器或标签栏控制器中。我们如何解除VC并将新VC设置为主VC,就像用户首次打开应用程序而未事先登录一样?我们也希望使用该事件的正常动画(模态动画很好)对过渡进行动画处理。我已经阅读了很多不同的方法,但我想知道哪种方式是最佳实践,并且应该专门解决所有VC并将新的VC放在Nav控制器中。
答案 0 :(得分:0)
如果您可以访问应用的UIWindow
,则可以将其rootViewController
属性设置为登录视图控制器,从而有效删除所有当前视图控制器并添加登录视图控制器。这是一个例子:
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
// Should remove all subsequent view controllers from memory.
appDelegate.window?.rootViewController.dismiss(animated: true, completion: nil)
// Set the root view controller to a new instance of the sign in view controller.
appDelegate.window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SignIn")