如果用户输入了密码,请更改初始 ViewController

Change initial ViewController if user has entered a passcode

我将此登录屏幕作为初始视图控制器:

一旦他们输入密码,就会将他们带到下一个视图控制器。但是我该如何设置它只显示一次(第一次),而不是每次他们打开应用程序时?

谢谢!!

当用户点击 Submit 按钮时,只需将该事实保存为 UserDefaults 中的值:

UserDefaults.standard.set(true, forKey: "UserHasSubmittedPassword")

然后,如果用户之前输入过密码,您可以检查 AppDelegate 文件中的条件,并将用户重定向到另一个屏幕,如下所示:

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

  let hasSession: Bool = UserDefaults.standard.bool(forKey: "UserHasSubmittedPassword") ?? false
  let vc: UIViewController = {
            if hasSession {
                // next vc you want to show
            } else {
                // enter password vc
            }
  }()

  let navigationController = UINavigationController(rootViewController: vc)
  window?.rootViewController = navigationController
  window?.makeKeyAndVisible()
  return true
}

此外,当您希望用户再次输入密码时,不要忘记删除该值:

UserDefaults.standard.removeObject(forKey: "UserHasSubmittedPassword")

您可以在 NSUserDefaults 中设置一个 BOOL 并在 Appdeledate.m

的 didFinishLaunchingWithOptions 方法中检查它

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:"PasswordSubmitted"]; [[NSUserDefaults standardUserDefaults] 同步];

要检查它,您可以使用:BOOL passwordSubmitted = [NSUserDefaults standardUserDefaults]boolForKey:"PasswordSubmitted"];

if(passwordSubmitted){
     //move to next screen
}
else{
    //Show password screen
}