1
我们正在寻求改变用户从我们的应用程序注销的方式。为了做到这一点,我们想要关闭当前VC下的所有VC,并将另一个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并将不在Nav控制器中的新VC放在最前面。
问题是我们的根视图控制器不是导航控制器,所以我们不能使用这些语句。我们的根视图控制器是一个独立的VC,它本质上就是我们的加载屏幕,因为用户正在使用我们的后端进行身份验证,以确保它们具有有效的用户令牌。本质上,它在上面的第二行代码上失败。 –
您的根视图控制器是否呈现以下屏幕?如果是这样,你可以做'appDelegate.window?.rootViewController.dismiss(animated:true,completion:nil)' – paulvs
这是一个很好的方法吗? '让appDelegate = UIApplication.shared.delegate as? AppDelegate else {print(“error 1”);返回}' 'let signInVC = UIStoryboard(name:“Main”,bundle:nil).instantiateViewController(withIdentifier:“SignIn”)''self.present(signInVC,animated:true,completion:{appDelegate.window ?. rootViewController = signInVC})' –