我正在开发我的应用程序,我正在使用它UserDefaults
来存储令牌的价值
@IBAction func loginButtonTapped(_ sender: Any) {
Alamofire.request(Constants.API.url("driver/login"), method: .post, parameters: parameter, encoding: URLEncoding.default, headers: header).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
guard let json = response.result.value as! [String:Any]? else{ return}
guard let userData = json["data"] as! [String: AnyObject]? else{ return}
guard let token = userData["token"] as! String? else { return}
print("The value of token is \(token)")
let user = UserModel(with: userData)
print("The value of \(user)")
UserDefaults.standard.setAccessToken(token)
let userArchiveData = NSKeyedArchiver.archivedData(withRootObject:user )
UserDefaults.standard.setUserData(userArchiveData as AnyObject)
let nav = UIStoryboard.main.instantiate(.mainNavigation) as! UINavigationController
let vc = self.storyboard?.instantiate(.homeVC) as! HomeViewController
nav.pushViewController(vc, animated: true)
break
case .failure(_):
print(response.result.error as Any)
showNormalAlertWithTitle("Invalid Email", message: "Please Provide correct email and password")
break
}
}
}
在这里,我在login button
单击时存储令牌值。当我单击注销选项时,它会打开login view controller
,这是我在注销功能中编写的代码
func logOut() {
UserDefaults.standard.setUserData(nil)
UserDefaults.standard.setAccessToken(nil)
let vc = storyboard?.instantiateViewController(withIdentifier: "mainNavigation")
UIApplication.shared.keyWindow?.rootViewController = vc
}
现在的问题是,注销后,当我要login button
再次单击时login button
,它不起作用,它没有推送到HomeViewController
我在AppDelegate
课堂上写的代码:
func goToRootViewController() {
storyBoard = UIStoryboard(name: "Main", bundle: nil)
let nav = UIStoryboard.main.instantiate(.mainNavigation) as! UINavigationController
if UserDefaults.standard.getAccessToken().isEmpty {
gotoLogin()
return
} else {
let homeVc = UIStoryboard.main.instantiate(.homeVC) as! HomeViewController
nav.pushViewController(homeVc, animated: false)
}
let leftMenuVC = storyBoard?.instantiateViewController(withIdentifier: "menuVC") as! MenuViewController
container = MFSideMenuContainerViewController.container(withCenter: nav, leftMenuViewController: leftMenuVC, rightMenuViewController: nil)
container?.panMode = MFSideMenuPanModeNone
window?.rootViewController = container
window?.makeKeyAndVisible()
}
任何帮助?
问题是您在注销时设置了 rooViewController。因此,当您再次推送 homecontroller 时,它实际上是在推送控制器,但导航控制器现在不是 rootViewController。因此,您必须在成功部分执行此操作:
let nav = UIStoryboard.main.instantiate(.mainNavigation) as! UINavigationController
let vc = self.storyboard?.instantiate(.homeVC) as! HomeViewController
nav.pushViewController(vc, animated: true)
UIApplication.shared.keyWindow?.rootViewController = vc
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句