为啥在完成块中更改 .text 字段时 UITextField 和 UILabel 不更新?

Posted

技术标签:

【中文标题】为啥在完成块中更改 .text 字段时 UITextField 和 UILabel 不更新?【英文标题】:Why don't the UITextField and UILabel update when the .text field is changed in a completion block?为什么在完成块中更改 .text 字段时 UITextField 和 UILabel 不更新? 【发布时间】:2014-11-27 00:58:40 【问题描述】:

我有一个视图控制器和一个计算器类。我在视图控制器中有一个计算器实例,并通过该实例调用数据获取方法。这也会更新计算器实例的变量。我想在数据提取完成后更新 UILabel,但是当我包含时

nameOFLabel.text = String(calculatorInstance.updatedValue)

作为数据获取方法的完成处理程序,即使知道值更改,标签在运行时也不会更新。

【问题讨论】:

【参考方案1】:

UI 元素必须在主执行线程上更新。您可以使用 GDC(Grand Central Dispatch)例程来完成此操作。所以试试这个:

dispatch_async(dispatch_get_main_queue(), 
    nameOFLabel.text = String(calculatorInstance.updatedValue)
)

【讨论】:

以上是关于为啥在完成块中更改 .text 字段时 UITextField 和 UILabel 不更新?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的代码在完成块中运行两次

同一动画块中的两个属性更改具有不同的持续时间。为啥?

为啥动态更改值时光标会移动到输入字段的开头?

为啥 Solr 在更新字段后会更改记录位置

无法更改 label.text 并且不知道为啥

为啥 Textfield 控件不采用道具(类)?