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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 3返回上一个视图控制器相关的知识,希望对你有一定的参考价值。

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

        }

        }

    }

}

因此,第一次检查检查用户名或密码文本字段是否为空,如果是,则创建警报。当我第一次启动应用程序时,它就像一个魅力。但是,当我与用户登录并注销时,我被重定向到登录屏幕,其中用户名和密码为空。然后我点击登录并获得正确的警告“请确保填写所有字段”,当我解除时,它会自动执行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时,它会关闭当前视图控制器。在注销后关闭登录屏幕(第二屏幕)而不是执行segue。

以上是关于Swift 3返回上一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

JSQ 消息视图控制器:在导航栏上添加“返回”按钮和图像,Swift

使用 swift 4 退出应用程序并返回主屏幕

返回上一个 ViewController 不适用于 Swift 中的多个视图控制器

如何将这个 Objective-C 代码片段写入 Swift?

如何在swift 3中从一个视图控制器传递到上一个视图控制器时设置委托?

Swift 3:按钮在控制器上不起作用添加为子视图