倒数计时器无法正常工作,并且无法更新UILabel

问题描述 投票:-1回答:2

我正在尝试创建一个简单的eggTimer,但是Timer根本不起作用(当我将计时器打印到控制台时,我得到了这个信息:<__ nscftimer>),并且我创建的countdownLabel根本没有更新。我不确定发生了什么错误,原因是我尝试遵循计时器的说明文件。

这里是代码(这是三个按钮softegg,mediaegg,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()

}
swift timer label
2个回答
0
投票

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


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

        }

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.