标签没有在Swift中显示计时器的值

时间:2015-03-31 22:33:45

标签: ios swift nstimer

我有一个执行基本倒计时的计时器循环,它将值打印到控制台。我试图将该值设置为标签的文本值。即使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

    }

1 个答案:

答案 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)
  }
}

希望有所帮助