我具有类似的功能。
@IBAction func btn_Login(_ sender: Any) {
AuthenticateAndGoToMainScreen()
}
现在AuthenticateAndGoToMainScreen()
方法中有一个API调用,在此我得到了token
。现在,当我获得令牌时,我想导航到另一个屏幕。我无法在API调用中执行此操作,因为它引发了一个错误,即performWithSegue
仅可在主线程中访问。
在主线程中提供performWithSegue
也不起作用,因为当我导航到下一个屏幕并单击一个按钮时,它崩溃了。
所以我想吃点这样的东西。
@IBAction func btn_Login(_ sender: Any) {
AuthenticateAndGoToMainScreen()
if mytoken != "" {
performSegueWithIdentifier.....
}
}
在这种情况下,我在API调用的结果中获得令牌。但是我的疑问是..我怎么知道变量mytoken
的值是否已更改,因此我的控件将再次返回到btn_Login
函数,然后执行performSegueWith...
。
这可以通过getter-setter
来实现。但是我不确定如何在此处实现...
您可以通过多种方式执行此操作,但简单的方法是在didSet
上放置一个myToken
,如下所示:
var myToken: String {
didSet {
performSegueWithIdentifier
}
}
使用属性观察器didSet并在主线程上调用performSegue..。像:
var myToken: String {
didSet {
DispatchQueue.main.async {
self.performSegue(...)
}
}
}