Swift NSTimer暂停恢复

时间:2016-12-15 17:02:26

标签: swift nstimer

我正在使用Swift编程,我遇到了问题。 我正在使用NSTimer使用计时器编写代码,并且我已成功停止计时器。我创建了一个按钮来重启计时器,但我不知道如何输入代码。

import UIKit

class ViewController: UIViewController {
    /*Timer1*/
    var landmarkTime = 0
    var landmarkNSTimer = Timer()

    /*Timer3*/
    func landmarkTimer() {
        landmarkTime += 1
    }

    /*PauseButton*/
    @IBAction func PauseButton(_ sender: Any) {
        landmarkNSTimer.invalidate()
    }

    /*ResumeButton*/
    @IBAction func ResumeButton(_ sender: Any) {
        /*I want to restart the timer in this part, but I do not know what code to put in.*/
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        /*Timer2*/
        landmarkNSTimer = Timer(timeInterval: 1, target: self, selector: #selector(ViewController.landmarkTimer), userInfo: nil, repeats: true)
        RunLoop.main.add(landmarkNSTimer, forMode: RunLoopMode.commonModes)
    }
}

/* ResumeButton */这是一个问题。我在这部分输入/* Timer2 */,但我有一个未知的问题,我正在寻找另一个代码。告诉要在/* ResumeButton */中输入新代码,以便重新启动计时器。

1 个答案:

答案 0 :(得分:1)

你没有暂停计时器,你停了下来。如果您阅读invalidate的文档,则说[强调添加]:

  

停止接收器再次发射并请求将其从运行循环中删除。

计时器不要停顿;它根本不属于他们的API。如果您想要暂停/恢复行为,可通过多种方式获取,包括:

  • 恢复时创建新计时器。
  • 暂停时将fireDate设置为Date.distantFuture,然后在不久的将来恢复时将其设置为某个时间。
  • 使用布尔变量指示暂停状态,并在计时器触发时让计时器回调检查该变量。如果暂停== true,则不执行任何操作。