Xcode 如果用户名和密码错误,请停止并转至下一个控制器
如果用户名和密码不正确,我已经进行了验证。因此,如果两者都不正确,则应保留在登录页面以显示alertview。但是,在这种情况下,它将继续到下一个控制器,然后仅显示alertview。如何在用户名和密码不正确的情况下仍停留在登录页面,而不是进入下一个控制器。Milo是正确的,处理这种情况的最佳方法是在用户输入正确的详细信息之前不要启动segue 提交时检查表单,通过触发segue处理成功,通过抛出警报处理失败 按如下方式排列代码:Xcode 如果用户名和密码错误,请停止并转至下一个控制器,xcode,swift,parsing,ios8,xcode6,Xcode,Swift,Parsing,Ios8,Xcode6,如果用户名和密码不正确,我已经进行了验证。因此,如果两者都不正确,则应保留在登录页面以显示alertview。但是,在这种情况下,它将继续到下一个控制器,然后仅显示alertview。如何在用户名和密码不正确的情况下仍停留在登录页面,而不是进入下一个控制器。Milo是正确的,处理这种情况的最佳方法是在用户输入正确的详细信息之前不要启动segue 提交时检查表单,通过触发segue处理成功,通过抛出警报处理失败 按如下方式排列代码: override func shouldPerformSegue
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool
{
if (identifier == "gotoLogin")
{
if txtUsername.text.isEmpty || txtPassword.text.isEmpty
{
let alertView = UIAlertView(title: "Error", message: "Cannot blank", delegate: self, cancelButtonTitle: "OK")
alertView.show()
return false
}
else if txtUsername.text != "" && txtPassword.text != ""
{
activityIndicator.startAnimating()
PFUser.logInWithUsernameInBackground(txtUsername.text, password: txtPassword.text, block: { (user:PFUser?, error:NSError?) -> Void in
if(error == nil)
{
self.activityIndicator.stopAnimating()
self.performSegueWithIdentifier("gotoLogin", sender: self)
}
else
{
self.activityIndicator.stopAnimating()
var errorCode = error?.code
switch errorCode!
{
case 101:
var alertView = UIAlertView(title: "Incorrect Username or Password", message: "Try Again!", delegate: self, cancelButtonTitle: "OK")
alertView.show()
break
default:
break
}
}
})
return true
}
}
return true
}
这就是你所追求的模式。我认为你应该尝试另一种方式,除非他们输入了正确的密码,否则不要做任何事情credentials@milo526作为一个很好的应用,当用户输入错误时,我们需要通知用户……您的问题表明您希望停止下一个视图控制器的操作。相反,不要继续,首先检查是否有错误。如果有错误,则显示错误,如果没有错误,则转到下一个视图控制器。@milo526 ya,我已经进行了验证,但验证很奇怪,它会在下一个控制器中弹出alertview,但不会在登录页上弹出,基于此代码,你介意帮我看看当用户名和密码都不正确时如何在页面上停止并弹出alertview吗。
func onSubmitButton(sender: AnyObject){
if username !="" && password !="" {
success = checkusername(username,password)
//if this is an http request you probably want to do a delegate pattern
//and create a callback instead- just create 2 delegate functions-
// one for success and one for fail and pass self of vc to http request)
if success{
performSegue();
}else{
clearForm();
throwAlert()
}
}