登录按钮在 swift 3 中不起作用

翅膀

我正在开发我的应用程序,我正在使用它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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章