Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3返回到上一个视图控制器_Ios_Swift_Xcode_Parse Platform - Fatal编程技术网

Ios Swift 3返回到上一个视图控制器

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

我正在创建的应用程序中有一个登录功能,它似乎工作正常。我使用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")
    }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,成功了!