swift - Root View Controller 和展开 segues?

标签 swift ios9 xcode7 unwind-segue rootviewcontroller

我有 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/

相关文章:

来自日期格式的 Swift 3 链接

swift - 如何在 Swift 4 中安全地解包字典值?

Xcode UI 测试 - UI 测试失败 - 当点击搜索字段 "Cancel' 按钮时无法滚动到可见(通过 AX 操作)

iOS 9 启动画面是黑色的

ios - Xcode 调试器是否可以捕获违反 Apple 的 “App Transport Security” 策略的陷阱

swift - Swift 中的求幂运算符

ios - 如何摆脱警告 "Result of call ' resignFirstResponder( )' is unused"?

iOS 9 通知 - 为什么在我请求权限时缺少我的应用程序名称?

iOS 9 - App Transport Security 不会加载 XML 文件

ios - Q - 在 iOS 9 的最新 SDK 中查找与 FBAppCall 等效的类