gpt4 book ai didi

ios - 在后台线程中动态更新 UILabel - Swift

转载 作者:行者123 更新时间:2023-11-30 13:37:45 24 4
gpt4 key购买 nike

我正在尝试在后台运行的循环函数中动态更新 UILabel。据我所知,您无法在后台线程中更新 UI,而只能在主线程中更新。我已将dispatch_async 添加到我的循环函数中,但仍然只获取要显示的输入字符串的最后一个单词。

这是我的简化代码:

@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
parseString("Hello World")
}

func parseString(sentence: String) {
var wordArr = sentence.componentsSeparatedByString(" ")

for i in 0...wordArr.count-1 {
dispatch_async(dispatch_get_main_queue(),
{
self.label.text = wordArr[i]
})
}
}
}

`

最佳答案

下面是对您的方法的重写,它可能是您想要的,也可能不是您想要的,但它显示了在线程之间共享工作的逻辑,并且还为 UI 在覆盖部分结果之前提供了显示部分结果的时间。

func parseString(sentence: String) {
var wordArr = sentence.componentsSeparatedByString(" ")

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) { () -> Void in
for i in 0..<wordArr.count {
let seconds = UInt64(i * 2)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * NSEC_PER_SEC)), dispatch_get_main_queue(), { () -> Void in
self.label.text = wordArr[i]
})
}
}
}

关于ios - 在后台线程中动态更新 UILabel - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35899096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com