gpt4 book ai didi

ios - 如何使用 UserDefaults 快速实现登录/注销导航?

转载 作者:行者123 更新时间:2023-12-01 23:57:07 25 4
gpt4 key购买 nike

** strong text **每次运行应用程序时,我都必须登录才能进入应用程序的主页。

当我点击登录按钮直到点击注销按钮时,如何存储 session 。

这样,我就可以避免每次运行应用程序时登录。

请帮帮我......

其他解决方案不起作用。

class LoginViewController: UIViewController {

@IBOutlet weak var password: UITextField!
@IBOutlet weak var loginName: UITextField!

@IBAction func submitButton(_ sender: Any) {

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

if loginName.text == "test" && password.text == "test" {

UserDefaults.standard.set(true, forKey: "status")
Switcher.updateRootVC()

}
else{
print("Invalid credentials")
}
}
}

class ProfileViewController: UIViewController {

@IBAction func submitButton(_ sender: Any) {

UserDefaults.standard.set(false, forKey: "status")
Switcher.updateRootVC()

}

}
class AppDelegate: UIResponder, UIApplicationDelegate {


var window: UIWindow?

func loadBaseController() {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
guard let window = self.window else { return }
window.makeKeyAndVisible()
if UserDefaults.standard.bool(forKey: "isLoggedIn") == false {
let loginVC: ViewController = storyboard.instantiateViewController(withIdentifier: "login") as! ViewController
self.window?.rootViewController = loginVC
} else {
let homeVC: HomeViewController = storyboard.instantiateViewController(withIdentifier: "showData") as! HomeViewController
let navigationHomeVC = UINavigationController(rootViewController: homeVC)
self.window?.rootViewController = navigationHomeVC
}
self.window?.makeKeyAndVisible()
}


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

self.loadBaseController()

return true

}
}

我引用了此链接的相同方法https://medium.com/@paul.allies/ios-swift4-login-logout-branching-4cdbc1f51e2c但它没有用,因为我没有得到预期的结果。
我是正确的状态代码,但不是正确的 View Controller 。请帮我解决这个问题......

在给定的链接中,它将 TabbarVc 添加到 tabor

最佳答案

在 Xcode 11 中,我们创建新项目时有 2 个文件,因此如果您想从委托(delegate)文件更改 rootViewController,则需要从 SceneDelegate.swift 文件加载该 Controller 。

//SceneDelegate.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }

window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene

self.loadBaseController()
}


func loadBaseController() {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
guard let window = self.window else { return }
window.makeKeyAndVisible()
if UserDefaults.standard.bool(forKey: "isLoggedIn") == false {
let loginVC: ViewController = storyboard.instantiateViewController(withIdentifier: "login") as! ViewController
self.window?.rootViewController = loginVC
} else {
let homeVC: HomeViewController = storyboard.instantiateViewController(withIdentifier: "showData") as! HomeViewController
let navigationHomeVC = UINavigationController(rootViewController: homeVC)
self.window?.rootViewController = navigationHomeVC
}
self.window?.makeKeyAndVisible()
}

关于ios - 如何使用 UserDefaults 快速实现登录/注销导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58444248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com