Ios Swift 3返回到上一个视图控制器
我正在创建的应用程序中有一个登录功能,它似乎工作正常。我使用Parse。这里是登录功能Ios Swift 3返回到上一个视图控制器,ios,swift,xcode,parse-platform,Ios,Swift,Xcode,Parse Platform,我正在创建的应用程序中有一个登录功能,它似乎工作正常。我使用Parse。这里是登录功能 @IBAction func login(_ sender: AnyObject) { if self.userName.text == "" || self.password.text == "" { self.createAlert(title: "Login Error", message: "Please make sure all fields are filled in
@IBAction func login(_ sender: AnyObject) {
if self.userName.text == "" || self.password.text == "" {
self.createAlert(title: "Login Error", message: "Please make sure all fields are filled in")
}else{
PFUser.logInWithUsername(inBackground: userName.text!, password: password.text!) { (user, error) in
self.activityIndicator.stopAnimating()
UIApplication.shared.endIgnoringInteractionEvents()
if error != nil {
var displayErrorMessage = "Please try again later."
if let errorMessage = (error! as NSError).userInfo["error"] as? String {
displayErrorMessage = errorMessage
}
self.createAlert(title: "Signup Error", message: displayErrorMessage)
}else{
print("logged in")
self.performSegue(withIdentifier: "successLogin", sender: self)
}
}
}
}
因此,第一个检查检查用户名或密码文本字段是否为空,如果为空,将创建一个警报。当我第一次启动应用程序时,它就像一个符咒。但是,当我与用户一起登录并注销时,我会被重定向到登录屏幕,其中用户名和密码为空。然后我点击login,得到一个正确的警告,上面写着“请确保所有字段都已填写”,当我取消它时,它会自动执行这个步骤,就像登录成功一样。有人能帮我吗
@IBAction func logOut(_ sender: AnyObject) {
PFUser.logOut()
performSegue(withIdentifier: "logOutSeg", sender: self)
}
此外,这是我的创建警报功能:
func createAlert(title: String, message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
self.dismiss(animated: true, completion: nil)
}))
self.present(alert, animated: true, completion: nil)
}
如果我在第一个If语句之后删除createAlert方法,它会正确地执行操作,因此我假设它在该语句中。当您第一次从第二个屏幕注销时,如果它通过执行segue来进入第一个日志屏幕,则可能会发生这种情况。这就是为什么你会得到空的用户名和密码。当您在登录屏幕中通过调用
self.disclose(动画:true,完成:nil)
关闭alertviewcontroller时,它会关闭当前视图控制器。关闭登录屏幕(第二个屏幕),而不是在注销后执行segue。我想知道您是否在登录屏幕上执行seque,然后在ok操作中执行self.disclose。可能是解雇正在撤消segue吗?@ryantxr他们注销时,我在登录屏幕上做了一个segue,但我看不到我调用self的任何地方。解雇操作请参见:alert.addaction好的,谢谢,我基本上摆脱了self.dislose,成功了!