0

我正在 swift 4 中为我的应用程序做介绍,但我遇到了一个问题。我有一个 introController 和 HomeController 视图,根视图是 introController 所以我想要如果用户从 introControll 登录到 HomeController,那么每当用户打开应用程序时,第一个视图出现是 HomController,(他们不需要再次登录)。

我想到了 userDefaults 中的商店登录状态,我不希望我的应用使用导航,知道吗?请帮忙

提前致谢

4

2 回答 2

1

这很简单

当用户像这样成功登录时,您需要在 UserDefaults 中保存状态:[Swift 3, 4]

/// call if user logged in
func saveLoggedState() {

    let def = UserDefaults.standard
    def.set(true, forKey: "is_authenticated") // save true flag to UserDefaults
    def.synchronize()

}

然后在 AppDelegate 中的 didFinishLaunchingWithOptions 之前返回 true

let def = UserDefaults.standard
let is_authenticated = def.bool(forKey: "is_authenticated") // return false if not found or stored value

if is_authenticated {
    // user logged in
    let homeController = HomeController() // create instance of HomeController or from Storyboard

    window?.rootViewController = homeController // change rootViewController to HomeController
    window?.makeKeyAndVisible() // show window
}
于 2017-09-14T03:57:30.440 回答
1

当您登录时保存任何布尔值,如下所示:

UserDefaults.standard.set("1", forKey: "isLogin")

在 appdelegate 中检查登录状态,如下所示:

if UserDefaults.standard.value(forKey: "isLogin") != nil{
            //Navigate to homeviewcontroller
 }else{
            //Navigate to rootviewcontroller
 } 
于 2017-09-14T03:28:19.710 回答