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/

10-11 04:27
查看更多