gpt4 book ai didi

ios - 未在 viewController 中执行 Segue

转载 作者:行者123 更新时间:2023-12-01 18:35:13 25 4
gpt4 key购买 nike

我正在开发我的第一个 iOS 应用程序。

有一个 viewController 检查用户是否已经登录。

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

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

打印输出是
Usuario actual logeado: OK
logeado:

这意味着应该执行segue,但事实并非如此。

segue 存在且标识符为 sinlogear
我的代码中是否有任何遗漏或无效的内容?

enter image description here

编辑

完整代码:
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
}


}

最佳答案

你应该稍微改变一下 performSegue。但首先。

1.)删除当前的segue(通过单击 Storyboard中的连接并将其删除)

2.)拖动一个新的segue(就像你在创建当前segue时所做的那样)

3.) 添加相同的标识符

4.) 修复您的 performSegue,例如:

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

————

编辑:无法从 viewDidLoad() 执行转场因为太早了。此函数在 Storyboard 出现之前运行。考虑使用 viewDidAppear
override func viewDidAppear(){
//perform the segue here
}

关于ios - 未在 viewController 中执行 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60697182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com