我试图创建一个简单的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()
}
答案 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
}
}
}