我在使用iOS SDK 8的Swift时遇到一个问题
我使用了回调来获取数据背景,并且在获取数据时,我想设置一个文本字段值并更新屏幕。
这是我的代码:
@IBOutlet var txtTest: UITextField! @IBAction func login() { let username = "aaa"; let password = "bbb"; var res = ServiceClient.login(username, password: password){ (res:String, error:String?) -> Void in if(error == nil){ self.txtTest.text = res; } } }
运行此代码,将正确获取数据并且txtTest没有更新,但是当我点击txtTest时,将显示该值。那么有什么方法可以强制更新UI?或向UI线程发送消息?
每个人都想在Swift中进行UI更新时遇到的同一问题:永远不要在任何辅助线程中更新UI。这意味着任何带有闭包的东西。由于Swift大量使用闭包,因此人们对该问题的关注更多,但这并不是新问题。