私は3つのView Controllerを持っています:1)LoginViewController。2) メインビューコントローラー。3) LogoutViewController。
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 では、LoginViewController へのアンワインド セグエを使用しました。つまり、ログアウト ボタンがあり、アンワインド セグエを使用して LoginViewController に移動しました。これは、アプリが LoginViewController からではなく MainViewController から開始された場合に正常に機能します。
ただし、ログアウトボタンが押されたときにLoginViewControllerまたはMainViewControllerから開始し、他のすべてのViewControllerをメモリから解放するときに、LoginViewControllerに移動したいと考えています。どうしてですか?