更新 UILabel Swift
Update UILabel Swift
我在更新标签时遇到问题,似乎无法在 Internet 上找到任何解决方案。我需要标签在文本更改后立即更新。我只是在使用一个简单的观察器。
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()
默认情况下,控件不会立即更新,而是在下一个 运行 循环中更新。
由于您循环了一百万次,因此您正在阻止更新,并且您尝试对 UI 进行的更改中有 999,999 项甚至不会应用。
您对 UI 所做的最后更改将不会提交,直到 运行 循环获得控制权。
顺便说一句,调用 setNeedsDisplay
只会让系统知道标签需要在下一个 运行 循环中更新。它不会像您想象的那样立即更新。但这真的是多余的,因为更改标签的文本已经将标签标记为需要更新。
我在更新标签时遇到问题,似乎无法在 Internet 上找到任何解决方案。我需要标签在文本更改后立即更新。我只是在使用一个简单的观察器。
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()
默认情况下,控件不会立即更新,而是在下一个 运行 循环中更新。
由于您循环了一百万次,因此您正在阻止更新,并且您尝试对 UI 进行的更改中有 999,999 项甚至不会应用。
您对 UI 所做的最后更改将不会提交,直到 运行 循环获得控制权。
顺便说一句,调用 setNeedsDisplay
只会让系统知道标签需要在下一个 运行 循环中更新。它不会像您想象的那样立即更新。但这真的是多余的,因为更改标签的文本已经将标签标记为需要更新。