更新UILabel Swift

时间:2016-02-01 22:19:12

标签: ios swift uilabel

我在更新标签时遇到问题,似乎无法在互联网上找到任何解决方案。我需要标签在文本发生变化时立即更新。我只是使用一个简单的观察者。

var updateLabel: String = "" {
    didSet { 
        label.text = updateLabel  //This doesn't update
        print(updateLabel)        //This Prints
    }
}

var count: Int? = 0

while (count! < 1000000) {
    count!++
    updateLabel = "\(count!)"
}

我试过这个,但没有用。

dispatch_async(dispatch_get_main_queue()) {
}

setNeedsDisplay()

1 个答案:

答案 0 :(得分:4)

默认情况下,控件不会立即更新,而是在下一个运行循环中更新。

由于您循环了一百万次,因此您阻止了更新,并且甚至不会应用您尝试对UI进行的999,999次更改。

在运行循环获得控制权之前,不会提交您对UI所做的最后一次更改。

另外,调用setNeedsDisplay只会让系统知道标签需要在下一个运行循环中更新。正如您所想,它不会立即更新它。但它真的是多余的,因为更改标签的文本已将标签标记为需要更新。