简体   繁体   English

未在 viewController 中执行 Segue

[英]Segue not being executed in viewController

I am working on my first iOS app.我正在开发我的第一个 iOS 应用程序。

There is a viewController that checks if the user has already signed in.有一个 viewController 检查用户是否已经登录。

print("Usuario actual logeado:",logeado_actual ?? "ninguno")

        if (logeado_actual == "OK"){
             print("logeado:")
            self.performSegue(withIdentifier: "sinlogear", sender: nil)
        }

The print output is打印输出是

Usuario actual logeado: OK
logeado:

that means that the segue should be executed, but it doesn't.这意味着应该执行 segue,但事实并非如此。

The segue exists and the Identifier is sinlogear segue 存在且标识符为sinlogear

Is there anything missing or not valid in my code?我的代码中是否缺少任何内容或无效?

在此处输入图片说明

EDIT编辑

Full code:完整代码:

import Alamofire

import UIKit

 class ViewController: UIViewController {

    @IBOutlet weak var txtEmail: UITextField!
    @IBOutlet weak var txtPassword: UITextField!


    @IBOutlet weak var btnAcceder: UIButton!

    @IBOutlet weak var btnContinuar: UIButton!

    @IBOutlet weak var btnRegistro: UIButton!
    @IBOutlet weak var btnOlvidar: UIButton!
    //Defined a constant that holds the URL for our web service
    let URL_USER_REGISTER = "https://.../android_api/login.php"

    struct Usuario: Codable {
        var id: Int
        var activacion: Int
        var autorizado: Int
        var cif: String
        var correo: String
        var cuenta: String
        var direccion: String
        var empresa: String
        var facebook_id: String
        var foto_usuario: String
        var instagram_id: String
        var num_estrellas: Int
        var tel: String
        var token_firebase: String
        var twitter_id: String
        var usuario: String
        var nombre: String
    }

    @IBOutlet weak var txtLabel: UILabel!
    @IBOutlet weak var labelMessage: UILabel!


    let defaults = UserDefaults.standard




    @IBAction func btnLogin(_ sender: Any) {
        print("login pulsado")

        //creating parameters for the post request
        let parameters: Parameters=[
            "email":txtEmail.text!,
            "password":txtPassword.text!
        ]

        print(txtEmail.text!)

         self.txtLabel.text = ""

        //Sending http post request
            Alamofire.request(URL_USER_REGISTER, method: .post, parameters: parameters).responseJSON
            {
                response in
                //printing response
                print(response)

                //getting the json value from the server
                if let resultado = response.result.value {

                    //converting it as NSDictionary
                    let jsonData = resultado as! NSDictionary


                    let id = jsonData.value(forKey:"id") as! NSNumber?
                    let estado = jsonData.value(forKey: "error") as! NSNumber?

                    if estado == 0 {
                    print("login:","OK")
                         self.txtLabel.text = "Datos correctos"
                        print("error:",estado!)
                                          print("id user:",id!)

                        if let json = response.result.value as? [String: Any] {
                            //usuario
                            do {
                                guard let user = json["user"] as? [String: Any],
                                      let usuario = user["usuario"] as? String
                                    else {

                                      print("Failed to parse JSON")
                                      return
                                }

                                self.defaults.set(usuario, forKey: "usuario")
                                self.defaults.set("OK", forKey: "logeado")
                                print(usuario)

                        }
                            //nombre
                                do {
                                    guard let user = json["user"] as? [String: Any],
                                          let nombre = user["nombre"] as? String
                                        else {

                                          print("Failed to parse JSON")
                                          return
                                    }

                                    self.defaults.set(nombre, forKey: "nombre")

                                    print(nombre)

                            }
                            //imageb
                                do {
                                    guard let user = json["user"] as? [String: Any],
                                          let foto_usuario = user["foto_usuario"] as? String
                                        else {

                                          print("Failed to parse JSON")
                                          return
                                    }
                                    self.defaults.set(foto_usuario, forKey: "foto_usuario")

                                    print(foto_usuario)

                            }
                            //correo
                           do {
                               guard let user = json["user"] as? [String: Any],
                                     let correo_usuario = user["correo"] as? String
                                   else {

                                     print("Failed to parse JSON")
                                     return
                               }
                               self.defaults.set(correo_usuario, forKey: "correo")


                               print(correo_usuario)
                       }

                        }




                    }
                    else {
                    print("login:","NO OK")

                        self.txtLabel.text = "Datos incorrectos"

                    }




                }
            }

        }

    override func viewDidLoad() {
        super.viewDidLoad()

            let usuario_actual = self.defaults.string(forKey: "usuario")
            let nombre_usuario_actual = self.defaults.string(forKey: "nombre")
            let foto_usuario_actual = self.defaults.string(forKey: "foto_usuario")
        let correo_usuario_actual = self.defaults.string(forKey: "correo")
        let logeado_actual = self.defaults.string(forKey: "logeado")

        print("Usuario actual:",usuario_actual ?? "ninguno")
        print("Usuario actual nombre:",nombre_usuario_actual ?? "ninguno")
        print("Usuario actual foto:",foto_usuario_actual ?? "ninguno")
         print("Usuario actual correo:",correo_usuario_actual ?? "ninguno")
        print("Usuario actual logeado:",logeado_actual ?? "ninguno")

        performSegue(withIdentifier: "misegue", sender: self)

        if (logeado_actual == "OK"){
             print("logeado:")

        }


        //redondear botones


        btnAcceder.layer.cornerRadius = 5
        btnAcceder.layer.borderWidth = 1
        btnAcceder.layer.borderColor = UIColor.white.cgColor

        btnOlvidar.layer.cornerRadius = 5
        btnOlvidar.layer.borderWidth = 1
        btnOlvidar.layer.borderColor = UIColor.white.cgColor

        btnRegistro.layer.cornerRadius = 5
        btnRegistro.layer.borderWidth = 1
        btnRegistro.layer.borderColor = UIColor.white.cgColor

        btnContinuar.layer.cornerRadius = 5
        btnContinuar.layer.borderWidth = 1
        btnContinuar.layer.borderColor = UIColor.white.cgColor
    }


    }

You should change the performSegue a bit.您应该稍微更改 performSegue。 But first.但首先。

1.) Remove the current segue (by clicking the connection in the storyboard and delete it) 1.) 移除当前的 segue(通过点击故事板中的连接并删除它)

2.) Drag a new segue (like you did when created your current one) 2.) 拖动一个新的 segue(就像你在创建当前的 segue 时所做的那样)

3.) Add the same identifier 3.) 添加相同的标识符

4.) Fix your performSegue like: 4.) 修复你的 performSegue 像:

performSegue(withIdentifier: "sinlogear", sender: self)

———— ————

EDIT: A segue cannot be performed from viewDidLoad() because it's too early.编辑:无法从viewDidLoad()执行 segue,因为它太早了。 This function is runned before the storyboard is there.这个函数在故事板出现之前运行。 Consider using viewDidAppear考虑使用viewDidAppear

override func viewDidAppear(){
 //perform the segue here
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM