【发布时间】:2015-07-09 22:31:31
【问题描述】:
尝试在 1 秒后更新标签。我正在使用睡眠功能,但应用程序正在加载而不是即时更新文本字段。
代码是:
override func viewDidAppear(animated: Bool) {
beginCountdown()
}
func beginCountdown() {
for var i = 5; i >= 0; i-- {
println("Time until launch \(i)")
var county:String = "\(i)"
countdownLabel.text = county
sleep(1)
}
}
出口是正确的,我知道我错过了一些东西。谢谢
【问题讨论】:
-
您应该为此使用 NSTimer,让计时器每秒重复一次并更新标签。数到五后将其关闭。
-
最后 - 我得到了 println 罚款
-
永远不要在主线程上使用
sleep。 -
UI 只能在有机会执行时才能绘制。您的代码所做的是在循环执行时阻塞,UI 无法更新,直到代码被解除阻塞,因此它没有您想要的效果,并且您的 UI 代码在倒计时期间没有更新,只有在它完成之后。您需要使用 NSTimer,这将允许代码在倒计时期间解除阻塞并运行,而不是在倒计时之后,这样做将允许 UI 绘制。