Ios 在swift中使用计时器

Ios 在swift中使用计时器,ios,swift,xcode,Ios,Swift,Xcode,我是一个完全的初学者,正在开始学习Swift编程语言。我正在学习Udemy的教程,在设置计时器方面遇到了一些问题 class ViewController: UIViewController { @IBOutlet weak var label: UILabel! var timer1 = Timer() var counter = 0 override func viewDidLoad() { super.viewDidLoad() // Do any additional

我是一个完全的初学者,正在开始学习Swift编程语言。我正在学习Udemy的教程,在设置计时器方面遇到了一些问题

class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
var timer1 = Timer()
var counter = 0


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    label.text = String(counter)



}
@IBAction func start(_ sender: Any) {

    timer1 = Timer(timeInterval: 1, target: self, selector: #selector(tim), userInfo: nil, repeats: true)



}

@IBAction func pause(_ sender: Any) {

    timer1.invalidate()

}

@IBAction func restart(_ sender: Any) {

    timer1.invalidate()
    counter = 0
    label.text = String(counter)

}

@objc func tim() {

    counter += 1
    label.text = String(counter)

}
}

这是我的代码,但计时器不工作。请告诉我哪里出了问题。

您需要向RunLoop添加计时器

或者使用scheduledTimer


此外,在重新启动功能中,您还需要重新启动,因为现在您只是使其无效,而不再启动。

什么是“不工作”呢?具体点。您要做什么以及结果如何?您必须将计时器添加到runloop或使用scheduledTimer API。“重新启动”会重置计数器,但不会重新启动计时器。@马特计时器不会启动,但看起来我没有安排它。现在一切都好了@瓦迪安是的,我知道了,谢谢!问题发生时,您是否在模拟器中运行?非常感谢!看来我错过了。重启功能更像是一种复位功能。我这边的措辞很糟糕。
RunLoop.current.add(timer1, forMode: .commonModes)
timer1 = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(tim), userInfo: nil, repeats: true)