我有 3 个 View Controller : 1)登录 View Controller 。 2) 主视图 Controller 。 3) 注销 View Controller 。
当他从 LoginViewController 登录时,我使用 NSUserDefaults 来存储用户名。
然后在 AppDelegate 中我使用这个方法:
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let UserData = NSUserDefaults.standardUserDefaults()
if (UserData.stringForKey("Username") != nil) {
let initialViewController = storyboard.instantiateViewControllerWithIdentifier("MainViewController") as! MainViewController
self.window?.rootViewController = initialViewController
} else {
let initialViewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController
self.window?.rootViewController = initialViewController
}
因此,当 NSUserDefaults 中存储了用户名时,应用会跳转到主视图 Controller 并跳过应用启动时的第一个。
在 LogoutViewController 中,我使用 unwind segue 转到 LoginViewController,这意味着我有一个注销按钮,我使用 unwind segue 转到 LoginViewController。当应用程序从 LoginViewController 而不是从 MainViewController 启动时,这工作正常。
但是,无论是从 LoginViewController 还是 MainViewController 启动,我都希望在按下注销按钮时转到 LoginViewController,并从内存中释放所有其他 ViewController。怎么可能?
最佳答案
您需要在注销时将 LoginViewController 设置为 rootViewController,而不是展开 segue。
let initialViewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController
UIApplication.sharedApplication().keyWindow?.rootViewController = initialViewController
关于swift - Root View Controller 和展开 segues?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37158637/