Fab*_*gue 8 label self swift swift-playground
我遇到了一个小问题,让我从代码开始
class ViewController: UIViewController {
@IBOutlet weak var LBoutput: UILabel!
@IBAction func BTclick(sender: AnyObject) {
var url = NSURL(string: "http://google.com")
println("test0")
let getdata = NSURLSession.sharedSession().dataTaskWithURL(url){(data ,response , error) in
var htmlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
println("test1")
println("test2")
self.LBoutput.text = "test6"
}
println("test3")
getdata.resume()
println("test4")
LBoutput.text = "test5"
}
Run Code Online (Sandbox Code Playgroud)
这段代码在控制台中给我一个输出
test0
test3
test4
test1
test2
此外,标签没有时间更新为"test5",但更新为"test6"的标签需要30秒.
我不知道为什么这需要这么长时间,任何人都有想法?
Rik*_*les 32
在辅助线程中更新UI的常见问题:
您的闭包显然没有在主线程上运行,因为URL任务是异步的.因此更新闭包上的标签必须等待主线程运行其更新循环.修复它的方法是包装.text =调用以强制它在主线程上运行(无论如何都应该运行UI内容):
dispatch_async(dispatch_get_main_queue()) {
self.LBoutput.text = "test6"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6166 次 |
| 最近记录: |