首页 > 解决方案 > 如何阻止 segue 在 Swift 中以编程方式进行?

问题描述

这是代码:

    @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声明中,我想阻止 segue 进行,因为用户尚未登录。这里的目标是不允许用户在遇到错误时继续前进。有“对立面”performSegue(withIdentifier: String, sender: Any?)吗?

标签: iosswiftxcode

解决方案


首先,performSegue(withIdentifier: String, sender: Any?) 没有“对立面”。

但问题不在于这个。我认为您从登录按钮连接了 segue 并给了它一个标识符。如果你直接从一个按钮连接一个segue,那么按钮总是会执行那个segue。在按钮的动作中做一些操作是没有效果的。

您需要将一个 segue 从 FirstVc 连接到 SecondVc(而不是从按钮),然后给 segue 一个标识符。然后,从按钮的操作中,您可以检查是否没有错误并调用 performSegue(withIdentifier: String, sender:) 传递您的 segue 标识符。


推荐阅读