Swift 3 返回到上一个视图控制器
Swift 3 Goes back to previous view controller
我正在创建的应用程序中有一个登录功能,它似乎工作正常。我使用解析。这是登录功能。
@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)
}
}
}
}
所以第一个检查是检查用户名或密码文本字段是否为空,如果是,它会创建一个警报。当我第一次启动该应用程序时,它就像一个魅力。但是,当我使用用户登录并注销时,我被重定向到用户名和密码为空的登录屏幕。然后我单击登录并获得正确的警告说 "Please make sure all fields are filled in" 并且当我关闭它时,它会自动执行 segue,就好像登录成功一样。谁能帮帮我?
@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.dismiss(animated: true, completion: nil)
在登录屏幕中关闭 alertviewcontroller 时,它会关闭当前的视图控制器。注销后关闭登录屏幕(第 2 个屏幕)而不是执行 segue。
我正在创建的应用程序中有一个登录功能,它似乎工作正常。我使用解析。这是登录功能。
@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)
}
}
}
}
所以第一个检查是检查用户名或密码文本字段是否为空,如果是,它会创建一个警报。当我第一次启动该应用程序时,它就像一个魅力。但是,当我使用用户登录并注销时,我被重定向到用户名和密码为空的登录屏幕。然后我单击登录并获得正确的警告说 "Please make sure all fields are filled in" 并且当我关闭它时,它会自动执行 segue,就好像登录成功一样。谁能帮帮我?
@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.dismiss(animated: true, completion: nil)
在登录屏幕中关闭 alertviewcontroller 时,它会关闭当前的视图控制器。注销后关闭登录屏幕(第 2 个屏幕)而不是执行 segue。