gpt4 book ai didi

ios - ShouldPerformSegue 触发两次

转载 作者:搜寻专家 更新时间:2023-11-01 07:05:40 25 4
gpt4 key购买 nike

我最近遇到了一个奇怪的问题。我有一个 Storyboard,其中有一个带按钮的 viewController A。从那个按钮,我在 Storyboard中创建了一个 segue 到 viewController B。单击该按钮时,将触发 segue。

该按钮是一个登录按钮,因此我需要在执行 segue 之前验证登录详细信息。

ViewController A 中,当按下按钮时,我有以下代码:

@IBAction func SignInButtonPressed(_ sender: Any) {

guard let email = username.text , username.text != "" else {
return self.successLogin = false
}
guard let pass = password.text , password.text != "" else {
return self.successLogin = false
}

AuthService.instance.loginUser(email: email, password: pass) { (success) in
if success {
self.successLogin = true
} else {
self.displayAlertView(title: USER_LOGIN_FAILED_TITLE, message: USER_LOGIN_FAILED_MESSAGE)
}
}

}

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
if successLogin != true && identifier == "homeSegue" {
self.displayAlertView(title: USER_LOGIN_FAILED_TITLE, message: USER_LOGIN_FAILED_MESSAGE)
return false
} else {
return true
}
}

但是有了这个,第一次点击会在 shouldPerformSegue 中显示警报,然后第二次点击允许登录。

关于如何解决此问题的任何建议都会有所帮助。

谢谢

最佳答案

你应该在你的 AuthService 成功关闭回调中执行 segue,你还应该从按钮中删除 unwind segue,按钮必须只执行登录逻辑,如果登录顺利然后 segue必须执行但不能之前

AuthService.instance.loginUser(email: email, password: pass) { (success) in
if success {
self.successLogin = true
self.performSegue(withIdentifier: "homeSegue", sender: self)
} else {
self.displayAlertView(title: USER_LOGIN_FAILED_TITLE, message: USER_LOGIN_FAILED_MESSAGE)
}
}

现在应该可以工作了

关于ios - ShouldPerformSegue 触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48167614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com