- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我最近遇到了一个奇怪的问题。我有一个 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/
我最近遇到了一个奇怪的问题。我有一个 Storyboard,其中有一个带按钮的 viewController A。从那个按钮,我在 Storyboard中创建了一个 segue 到 viewContr
对 Swift 编程和一般的移动开发还很陌生。我正在尝试使用 performSegue() 并在没有 if-else 语句的情况下控制它。我在谷歌上搜索了如何使用 override func shou
对 Swift 编程和一般的移动开发还很陌生。我正在尝试使用 performSegue() 并在没有 if-else 语句的情况下控制它。我在谷歌上搜索了如何使用 override func shou
在我的项目中,我设置了一个 UITableView,它的单元格绑定(bind)到一个 segue,将用户带到另一个 ViewController,其中单元格的数据得到详细显示。但是,并非所有单元格都应
使用 shouldPerforSegue() 函数,我可以在转场之前检查一些字段,但是,我需要它继续转场,即使在触发转场时字段很糟糕。 现在,当用户点击触发 segue 的按钮时,我正在检查图像是否已
例如,使用 prepare(for segue:.. 我可以简单地传递 segue 值: override func prepare(for segue: UIStoryboardSegue, sen
我在shouldPerformSegue中使用以下代码。我想根据用户是否选择删除或取消来停止或继续继续。 我注意到由于警报,segue 停止了。如果我删除警报,那么 segue 工作正常。 shoul
我正在尝试做的事情: 检查条件,如果条件为真,则执行 segue普通的。如果条件为假,调用 shouldPerformSegue 方法并返回 false 以取消 segue。 我是如何尝试做到这一点的
我想使用 Storyboardsegue(模态呈现)来呈现新的 View Controller ,但shouldPerform函数内部的验证是Firebase授权函数signIn,但由于尾随闭包直接返
我是一名优秀的程序员,十分优秀!