更改 UILabel 文本有延迟,但为什么呢?
Changing UILabel text has delay, but why?
在我的应用程序中,我想设置 UILabel
的文本。文本来自 JSON-object。我将我的 UILabel
添加到我的故事板,设置 IBOutlet
并调用我的异步方法来获取我的 JSON 对象。
在响应方法中,我设置了 UILabel
的文本。但是文本更改需要几秒钟。
当响应到来时,我将其打印到控制台。在那里我可以看到,延迟不是来自异步方法。
响应来了,我可以在控制台中看到它。等待 UIlabel
更改几秒钟。
我不明白这种行为,是否有立即刷新 UIlabel
的技巧?
一些代码:
@IBOutlet weak var label_news: UILabel!;
override func viewDidLoad() {
super.viewDidLoad()
self.label_news.text = "CHANGE";
rcall.GetNews_GET_NewsResponse_0(self.NewsResponseHandler);
}
func NewsResponseHandler(resp:NewsResponse!){
self.label_news.text = resp.NewsText;
println(resp.NewsText);
}
抱歉,如果这是一个初学者问题,swift 故事板对我来说是全新的。
此致
就像 Rob 在评论中所说的那样,所有 UI 更改都需要在主线程上完成。我还没有在 Swift 中实现它,但是 Objective-C 和我假设的 Swift 在下面...
Objective-C
dispatch_async(dispatch_get_main_queue(), ^{
self.label_news.text = resp.NewsText;
});
Swift:
dispatch_async(dispatch_get_main_queue()) {
self.label_news.text = resp.NewsText;
}
c_rath的回答是正确的。在 swift 3 中,语法(再次)更改为
DispatchQueue.main.async {
self. label_news?.text = resp.NewsText
}
在我的应用程序中,我想设置 UILabel
的文本。文本来自 JSON-object。我将我的 UILabel
添加到我的故事板,设置 IBOutlet
并调用我的异步方法来获取我的 JSON 对象。
在响应方法中,我设置了 UILabel
的文本。但是文本更改需要几秒钟。
当响应到来时,我将其打印到控制台。在那里我可以看到,延迟不是来自异步方法。
响应来了,我可以在控制台中看到它。等待 UIlabel
更改几秒钟。
我不明白这种行为,是否有立即刷新 UIlabel
的技巧?
一些代码:
@IBOutlet weak var label_news: UILabel!;
override func viewDidLoad() {
super.viewDidLoad()
self.label_news.text = "CHANGE";
rcall.GetNews_GET_NewsResponse_0(self.NewsResponseHandler);
}
func NewsResponseHandler(resp:NewsResponse!){
self.label_news.text = resp.NewsText;
println(resp.NewsText);
}
抱歉,如果这是一个初学者问题,swift 故事板对我来说是全新的。
此致
就像 Rob 在评论中所说的那样,所有 UI 更改都需要在主线程上完成。我还没有在 Swift 中实现它,但是 Objective-C 和我假设的 Swift 在下面...
Objective-C
dispatch_async(dispatch_get_main_queue(), ^{
self.label_news.text = resp.NewsText;
});
Swift:
dispatch_async(dispatch_get_main_queue()) {
self.label_news.text = resp.NewsText;
}
c_rath的回答是正确的。在 swift 3 中,语法(再次)更改为
DispatchQueue.main.async {
self. label_news?.text = resp.NewsText
}