我正在尝试创建一个简单的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()
}
在您的代码中,您有两个count实例。第一个在文件作用域中,第二个在softEggButton函数中。您必须删除函数中count前面的var。现在,您正在创建一个新实例,而不是为其分配新值。在这里还考虑是否真的需要全局变量。
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
}
}
}