UILabel.text
不会在主线程内更新。 labelOne
已更新,但表示已翻译单词的labelTwo
未更新。当我打印translatedWord
时,它会向控制台打印正确的字符串,但UILabel
不会更新。
datatask = session.dataTask(with: request, completionHandler: {data, response, error in
if error == nil {
let receivedData = try? JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]
DispatchQueue.main.async {
self.labelOne.text = wordTobeTranslated
let data = "\(String(describing: receivedData!["text"]))"
let all = data.components(separatedBy: "(")
let afterAll = all[2]
let last = afterAll.components(separatedBy:")" )
self.translatedWord = last[0]
self.importantWords.append(last[0])
self.labelTwo.text = self.translatedWord
print(self.translatedWord)
}
}
})
datatask?.resume()
最佳答案
一些调试问题的技巧:
尝试将一些硬编码的字符串设置为labelTwo并检查是否
正在显示。 (要么)
在情节提要中更新labelTwo的任何值,然后检查是否为
显示。
如果通过上述任何一个步骤显示了字符串,则在故事板中正确配置了labelTwo。
您也可以在更新文本后尝试使用self.labelTwo.layoutIfNeeded()
方法来强制更新UI。
如果没有任何步骤可以帮助您,请检查UILabel的字体颜色。如果与背景色相同,则将看不到它。
关于ios - UILabel文本即使在主线程中也不会更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55990855/