登录查看控制器登录后不想撤消。

问题描述 投票:0回答:1

我想问一下,我有一个登录视图控制器,在正确添加电子邮件和密码后不想解散,但当我第一次尝试模拟器的登录工作,并引导我到我的家控制器,但我签出后,并尝试再次登录,然后登录不解散我的登录视图控制器,这怎么可能?

// this is my sign out button
    @objc private func handleSignOut() {
        let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
        alert.addAction(UIAlertAction(title: "Log Out".localized(), style: .destructive, handler: { (_) in

            self.progressHUD.show(in: self.view)
            ProfileServices.shared.signOutUser { success in

                if success {
                    self.progressHUD.dismiss(animated: true)
                    let signInVC = SigninViewController()
                    self.present(signInVC, animated: true, completion: nil)
                } else {
                    self.progressHUD.textLabel.text = "Error"
                    self.progressHUD.dismiss(afterDelay: 0.4)
                }
            }
        }))

        alert.addAction(UIAlertAction(title: "Cancel".localized(), style: .cancel, handler: nil))
        present(alert, animated: true, completion: nil)
    }

// this is my sign out function in ProfileServices.shared
    func signOutUser(completion: @escaping (Bool) -> Void) {
        AF.request(API_URL.AUTHENTICATION.LOGOUT, method: .delete, parameters: nil, encoding: URLEncoding.default, headers: HEADERS, interceptor: nil).responseData { (dataResponse) in

            if dataResponse.error == nil {
                let domain = Bundle.main.bundleIdentifier!
                UserDefaults.standard.removePersistentDomain(forName: domain)
                UserDefaults.standard.synchronize()
                UserDefaults.removeToken()

                completion(true)
            } else {
                completion(false)
            }
        }
    }

// this is my sign in route in my sign in view controller
    func routeToMainView(_ data: SigninModel.Response) {
        let school = UserDefaults.getSelectedSchool()
        guard let schools = data.schools?.schools else { return }

        if let selectedSchool = school, let selected = schools.first(where: { $0.id == selectedSchool.id}) {
            UserDefaults.saveSelectedSchool(data: selected)
            let vc = MainViewController()
            self.viewController?.navigationController?.setViewControllers([vc], animated: true)
        } else {
            if schools.count > 1 {
                let vc = SwitchSchoolViewController()
                self.viewController?.navigationController?.setViewControllers([vc], animated: true)
            } else {
                guard let selected = schools.first else { return }
                UserDefaults.saveSelectedSchool(data: selected)
                DispatchQueue.main.async {
                    let vc = MainViewController()
                    self.viewController?.navigationController?.setViewControllers([vc], animated: true)
                }
            }
        }
    }

// this is in my appDelegate
    var root: UIViewController?
        root = SigninViewController()
        if UserDefaults.getToken() != nil {
            root = MainViewController()
        }
ios swift authentication access-token
1个回答
0
投票

在注销时,你需要dissmiss提出的viewController。

取而代之的是:

let signInVC = SigninViewController()
self.present(signInVC, animated: true, completion: nil)

你需要使用:

self.dismiss(animated: true, completion: nil)

或pop,如果你将使用推。

© www.soinside.com 2019 - 2024. All rights reserved.