ios - 如何阻止 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?)
吗?
解决方案
首先,performSegue(withIdentifier: String, sender: Any?) 没有“对立面”。
但问题不在于这个。我认为您从登录按钮连接了 segue 并给了它一个标识符。如果你直接从一个按钮连接一个segue,那么按钮总是会执行那个segue。在按钮的动作中做一些操作是没有效果的。
您需要将一个 segue 从 FirstVc 连接到 SecondVc(而不是从按钮),然后给 segue 一个标识符。然后,从按钮的操作中,您可以检查是否没有错误并调用 performSegue(withIdentifier: String, sender:) 传递您的 segue 标识符。
推荐阅读
- flutter - 如何在颤动中增加 FAB 的大小?
- python - 如何使用带有 Python 的 Google Drive API 覆盖文件?
- elastic-stack - 过滤器 logstash 和标记 _grokparsefailure、_geoip_lookup_failure 中丢失的日志数据
- python - 如何将列添加到基于另一列递增的数据框 - python
- node.js - 如何获取自动计数注册号nodejs mongodb
- c++ - 使用 dfs 检查图是否为二分图
- flutter - Flutter Spinner 日期选择器 (CupertinoDatePicker) 更改订单/交换位置
- reactjs - 调试到许多重新渲染错误反应redux
- c++ - Visual Studio Code C++ 包含本地文件
- php - 如何在我的整个项目中使用 phpdotenv 库?