2016-12-15 74 views
-1

我使用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 */中输入新代码,以便定时器可以重新启动。

+0

您是否阅读过文档? https://developer.apple.com/reference/foundation/timer – Alexander

+1

“简历”代码与“viewDidLoad”中的代码相同。 – rmaddy

回答

1

您没有暂停计时器,您停止了它。如果你读的文档invalidate,它说[强调]:

以后再发射停止接收器,并从它的运行循环要求其去除。

定时器不会暂停;它根本不是他们的API的一部分。如果您想暂停/恢复行为,可以采用多种方式获取,包括:

  • 恢复时创建一个新的计时器。
  • 暂停时将fireDate设置为Date.distantFuture,然后在恢复时将其设置为不久的将来一段时间。
  • 使用布尔变量来指示暂停状态,并让定时器回调在定时器触发时检查该变量。如果暂停==真,则什么也不做。