当用户启动应用程序时,我会检查身份验证状态,并显示不同的 ViewControler
Logged in -> Main ViewController -> Will pushViewController or presentViewController according to user action
Need Log in -> SignIn ViewController -> Main ViewController -> Will pushViewController or presentViewController according to user action
我的问题是当用户想要注销时如何返回到 SignIn ViewController。
方法一:
Current ViewController -> presentViewController/pushViewController SignIn ViewController
问题:以前的 ViewController 仍在内存中
方法二:
Current ViewController -> popToRootViewControllerAnimated -> presentViewController/pushViewController SignIn ViewController
问题:如果用户之前登录过,RootViewController将成为Main ViewController,我们无法通过该方法释放Main ViewController。
方法三:
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:signinNavigationController];
问题:没有动画,看起来以前的 ViewController 仍在内存中。
最佳答案
您可以在 Storyboard中使用 Unwind segue。有关详细信息,请参阅此链接:http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/
以编程方式, 当您按下注销按钮时调用 appDelegate 函数:
func showLoginController() {
//For Story board use this line
var loginController:LoginViewController = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("loginViewControllerIdentifier") as! LoginViewController
//for xib file use this line
var loginController:LoginViewController = UINib(nibName: "loginViewController", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as? LoginViewController
AppDelegate.sharedAppDelegate().window?.rootViewController = loginController
}
关于ios - 如何返回 SignIn ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915827/