一尘不染

在Swift iOS中更新文本字段ui

swift

我在使用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线程发送消息?


阅读 496

收藏
2020-07-07

共1个答案

一尘不染

每个人都想在Swift中进行UI更新时遇到的同一问题:永远不要在任何辅助线程中更新UI。这意味着任何带有闭包的东西。由于Swift大量使用闭包,因此人们对该问题的关注更多,但这并不是新问题。

2020-07-07