我有 3 个视图控制器:1) LoginViewController。2) 主视图控制器。3) 注销视图控制器。
当他从 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 中存储了用户名时,应用程序会跳转到主视图控制器并在应用程序启动时跳过第一个。
在 LogoutViewController 中,我使用 unwind segue 到 LoginViewController,这意味着我有一个注销按钮,我使用 unwind segue 转到 LoginViewController。当应用程序从 LoginViewController 但不是从 MainViewController 启动时,这可以正常工作。
但是,我希望在按下注销按钮时转到 LoginViewController,无论它是从 LoginViewController 还是 MainViewController 开始,并从内存中释放所有其他 ViewController。怎么会这样?