我正在为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)
并且有效。
代码有什么问题?
答案 0 :(得分:2)
您需要在self.performSegue
块中调用此dispatch_async
方法:
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
self.performSegue(withIdentifier: "seg", sender: self)
}
}
因为viewDidLoad()
在后台线程中运行,所有UI更新和转换必须在主线程上完成。