あなたの正確なユースケースが何であるかはわかりませんが、私のアプリでは、ユーザーがその時点でどのView Controllerにいるかに関係なく、いつでもログアウトできます。次に、ログイン画面を表示してユーザーに再度ログインする機会を与え、ログインが成功した場合はユーザーを元の場所に戻す必要があります。
これが意味することは、ログイン ビュー コントローラーをルートにして、その上に他のコントローラーをスタックすることはできないということです。
ただし、VC スタックを保存してログイン画面にスワップアウトし、ログインが成功したらメインの VC スタックに戻すことができます。
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var primaryViewController: UIViewController?
var loginViewController: UIViewController?
func userLoggedOut() {
self.window?.rootViewController = loginViewController
}
func userLoggedIn() {
self.window?.rootViewController = primaryViewController
}
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// other setup code
let storyboard = UIStoryboard(name: "Main", bundle: nil)
loginViewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController") as? UIViewController
primaryViewController = self.window?.rootViewController
if (!currentlyLoggedIn) {
userLoggedOut()
}
return true
}