Swift 如何防止出现多个 NSTimer.scheduledTimerWithTimeInterval

标签 swift nstimer

我一直在制作秒表。

启动、停止和暂停 Action 效果很好。

但是,当我点击开始操作两次时

time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)

这个 Action 再次开始,时间过得更快!

如何阻止该操作?

提前致谢!!!

最佳答案

您需要在类的顶部声明一个变量:

 var timer = NSTimer()

然后在开始按钮中分配此计时器变量,如下所示:

@IBAction func startTimerButtonTapped(sender: UIButton) {
   time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
}

每当你想停止这个计时器时,你都需要使其无效,如下所示:

timer.invalidate()

如果您想再点击两次开始按钮,则需要先使其失效后再安排:

@IBAction func startTimerButtonTapped(sender: UIButton) {
       timer.invalidate()
       time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
    }

希望这对您有帮助。

关于Swift 如何防止出现多个 NSTimer.scheduledTimerWithTimeInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36442153/

相关文章:

arrays - 如何将字典数组存储到类变量中?

swift ,AVAudioRecorder : Error 317: ca_debug_string: inPropertyData == NULL

swift - SpriteKit : SKSpriteNode controlled by device motion falls out of the screen in the corners

ios - 尝试做一个简单的倒计时应用程序但计数器没有倒计时?

ios - 如何使 ViewDidLoad 之外的计时器无效

ios - timer.invalidate() 无法在 Swift 中的同一 View 上工作

xcode - NSTimer 无法在设备后台运行

swift - swift 按时间顺序对月份数组进行排序

swift - 使用 MTLSharedEvent 在单个命令缓冲区内同步 CPU 和 GPU 之间的工作

ios - 基于现有文件创建新的 Xcode 项目。 (在 NSTimer 中创建圈数)