Swift - 倒数计时器不工作且不更新UILabel

时间:2017-02-26 20:37:59

标签: swift timer label

我试图创建一个简单的eggTimer,但是Timer根本不起作用(当我将计时器打印到控制台时我得到了这个:< __ NSCFTimer:0x60800016e4c0>)和countdownLabel I创建完全没有更新。我不确定是什么原因导致我试图按照计时器的文档进行操作。

这里是代码(这是针对softegg,mediumegg,hardegg三个按钮中的第一个):

import UIKit

var count = 0

class ViewController: UIViewController {

@IBOutlet var countDownLabel: UILabel!

@IBAction func softEggButton(_ sender: Any) {

    var count = 360
    soft()
}

func soft() {

    var timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)

    print(timer)


}

func update() {

    if(count > 0){
        let minutes = String(count / 60)
        let seconds = String(count % 60)
        countDownLabel.text = minutes + ":" + seconds
        count -= 1
    }

}


override func viewDidLoad() {
    super.viewDidLoad()

}

2 个答案:

答案 0 :(得分:0)

在您的代码中,您有两个计数实例。第一个位于文件范围,第二个位于softEggButton函数中。您必须删除函数中计数前面的var。现在,您正在创建一个新实例,而不是为其分配新值。还要考虑一下你是否真的需要一个全局变量。

答案 1 :(得分:0)

import UIKit

class ViewController: UIViewController {

    let eggTimes = ["Soft": 5, "Medium": 7, "Hard": 12]
    var eggTime = 0
    @IBAction func pressSelected(_ sender: UIButton) {
        let hardness = sender.currentTitle!
         eggTime = eggTimes[hardness]! * 60
         Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(update), userInfo: nil, repeats: true)

    }

    @objc func update() {

        if (eggTime > 0) {

              print("\(eggTime) seconds")

              eggTime -= 1

        }

    }
}