Контроллер входа в систему не хочет отклонять после входа в систему - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу спросить, у меня есть контроллер входа в систему, который не нужно отклонять после правильного добавления адреса электронной почты и пароля. но когда я пробую симулятор в первый раз, вход работает и направляет меня к моему домашнему контроллеру, но после того, как я выхожу. и попробуйте снова войти в систему, затем войдите в систему, чтобы не отключить мой контроллер вида для входа. как это возможно? сначала работает позже не работает, здесь я покажу вам мой код.

// 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()
        }

1 Ответ

0 голосов
/ 23 апреля 2020

При выходе из системы вам необходимо закрыть представленный viewController.

на месте:

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

вам необходимо использовать:

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

или всплыть, если вы будете использовать Pu sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...