Как запретить переходу на Swift программно? - PullRequest
0 голосов
/ 16 июня 2020

Вот код:

    @IBAction func loginTapped(_ sender: Any) {

    let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
    let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)

    Auth.auth().signIn(withEmail: email, password: password) { (result, error) in

        if error != nil {
            self.errorLabel.text = error!.localizedDescription
            self.errorLabel.alpha = 1
            print(error!.localizedDescription)
        }
        else {

            self.performSegue(withIdentifier: "loginSegue", sender: nil)

            print("User is signed in with Firebase.")
        }
    }
}

У меня есть переход, loginSegue, подключенный от кнопки входа к homeViewController. В операторе if error я хотел бы остановить переход, потому что пользователь не вошел в систему. Цель здесь не позволить пользователю go пересылать, если они получат ошибку. Есть ли «противоположность» performSegue(withIdentifier: String, sender: Any?)?

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Во-первых, нет противоположности performSegue (withIdentifier: String, sender: Any?)?

Но проблема не в этом. Я думаю, вы подключили переход к кнопке входа в систему и дали ей идентификатор. Если вы дадите кнопке переход напрямую, кнопка всегда будет показывать, к какой странице вы подключены. Выполнение некоторых операций с помощью кнопки не влияет.

Вам нужно добавить этот переход к FirstV c к SecondV c (не к кнопке), а затем указать этот переход, а затем управлять нажатием кнопки входа. Если ошибок нет, выполните переход с указанием идентификатора и покажите его.

1 голос
/ 16 июня 2020

Вы можете переопределить метод shouldPerformSegue(withIdentifier:,sender:) и вернуть false, если вход в систему не удался и вы не хотите выполнять переход. Вот пример

override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool {
    if let ident = identifier {
        if ident == "YourIdentifier" {
            if loginSuccess != true {
                return false
            }
        }
    }
    return true
}
1 голос
/ 16 июня 2020

Я думаю, ваша кнопка подключена для выполнения перехода в раскадровке. Таким образом, ваша кнопка имеет два действия: одно в раскадровке для перехода, а второе в коде. Просто удалите соединение из раскадровки и подключите только UIViewControllers, а не вашу кнопку.

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