注销并清除当前VC

时间:2017-06-21 22:05:34

标签: ios swift swift3

我们希望改变用户退出应用的方式。为了做到这一点,我们想要解除当前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控制器中。

1 个答案:

答案 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")