不执行segue

时间:2017-11-21 08:42:09

标签: ios swift

我正在为iOS应用测试一个简单的登录系统。

这是我要检查用户是否以普遍方式登录的代码:

 override func viewDidLoad() {
        super.viewDidLoad()

        let logeado = UserDefaults.standard.string(forKey: "logeado")
        let men = "SI"

        if logeado == men {
            showToast(message: logeado!)
            self.performSegue(withIdentifier: "entrar_segue", sender: self)
        }


    }

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "entrar_segue"{
            var vc = segue.destination as! HomeViewController

        }
    }

显示Toast,但不执行segue。有一个使用相同功能的按钮:

self.performSegue(withIdentifier: "entrar_segue", sender: self)

并且有效。

代码有什么问题?

1 个答案:

答案 0 :(得分:2)

您需要在self.performSegue块中调用此dispatch_async方法:

override func viewDidLoad() {
    super.viewDidLoad()

    DispatchQueue.main.async {
        self.performSegue(withIdentifier: "seg", sender: self)
    }
}

因为viewDidLoad()在后​​台线程中运行,所有UI更新和转换必须在主线程上完成。