Все цифры не отображаются в таймере обратного отсчета - PullRequest
0 голосов
/ 17 января 2019

При входе в представление я вызываю функцию для загрузки таймера следующим образом ...

var count = 10

 func startTimer() {
         timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
  }

и update функция задается как ..

@objc func update() {
    while (count != 0) {
      count -= 1
      countdownLabel.text = "\(count)"

    }
     timer.invalidate()
  }

Ночто происходит, когда я прихожу к этой точке зрения, сразу же показывается число 0, а не идеально отображаются все числа в последовательности 9,8,7,6,5,4,3,2,1,0

Что я здесь не так делаю ..?

1 Ответ

0 голосов
/ 17 января 2019

Swift 4:

    var totalTime = 10
    var countdownTimer: Timer!

    @IBOutlet weak var timeLabel: UILabel!

    override func viewDidLoad() {
      super.viewDidLoad()
      startTimer()
    }

Этот вызов метода инициализирует таймер. Он указывает timeInterval (как часто будет вызываться метод) и селектор (вызываемый метод).

Интервал измеряется секундами, поэтому, чтобы он работал как стандартные часы, мы должны установить этот аргумент равным 1.

    func startTimer() {
         countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
    }

// Stops the timer from ever firing again and requests its removal from its run loop.
   func endTimer() {
       countdownTimer.invalidate()
   }

  //updateTimer is the name of the method that will be called at each second. This method will update the label
   @objc func updateTime() {
      timeLabel.text = "\(totalTime)"

       if totalTime != 0 {
          totalTime -= 1
       } else {
          endTimer()
       }
   }
...