[英]How do I stop a segue from going through programmatically in 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.")
}
}
}
我有一個 segue, loginSegue
,從登錄按鈕連接到homeViewController
。 在if error
語句中,我想阻止 segue 進行,因為用戶尚未登錄。這里的目標是不允許用戶在收到錯誤時轉發 go。 performSegue(withIdentifier: String, sender: Any?)
是否有“對立面”?
我認為您的按鈕已連接以在 storyboard 中執行 segue。 所以你的按鈕有兩個動作 - 一個來自 storyboard 執行 segue 和第二個在你的代碼中。 只需從 storyboard 中刪除連接並僅連接 UIViewControllers 而不是您的按鈕。
首先,performSegue(withIdentifier: String, sender: Any?)沒有對立面?
但問題不在於它。 我想你用登錄按鈕連接了 segue 並給了它一個標識。 如果你直接給一個按鈕一個 segue,按鈕總是會顯示你連接到哪個頁面。 在按鈕動作中做一些操作沒有效果。
您需要將此 segue 添加到 FirstVc 到 SecondVc (而不是按鈕),然后識別此 segue 然后控制何時點擊登錄按鈕。 如果沒有錯誤運行 segue 並給出標識並顯示它。
您可以覆蓋shouldPerformSegue(withIdentifier:,sender:)
方法並在登錄失敗並且您不想執行 segue 時返回 false。 這是一個例子
override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool {
if let ident = identifier {
if ident == "YourIdentifier" {
if loginSuccess != true {
return false
}
}
}
return true
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.