我有一个执行基本倒计时的计时器循环,它将值打印到控制台。我试图将该值设置为标签的文本值。即使Xcode控制台显示计时器值的正确倒计时,应用程序中的标签仍显示0.有关为什么会发生这种情况的任何想法?以下是相关代码:
import UIKit
class GameViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
var timerCount = 7
var timerRunning = false
var timer = NSTimer()
override func viewDidLoad() {
super.viewDidLoad()
self.timerCount = 7
self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("Counting"), userInfo: nil, repeats: true)
}
func Counting(){
timerCount = 7
do {
println(timerCount)
timerRunning = true
--timerCount
timerLabel.text = "\(timerCount)"
println(timerCount)
} while timerCount > 0
}
答案 0 :(得分:2)
Counting()方法错误。
每秒你都会启动计数方法,并且在该方法中你有一个更新timerLabel.text的循环,但是直到Counting()完成才会更新UI ...这就是为什么总是显示为0.你需要只是为了减少每秒的计数并更新标签。
我认为这就是你所需要的:
func Counting(){
if timerCount == 0
{
timerCount = 7 // or self.timer.invalidate() in case you want to stop it
}
else
{
timerCount--;
timerLabel.text = "\(timerCount)"
println(timerCount)
}
}
希望有所帮助