Swift如何防止多个NSTimer.scheduledTimerWithTimeInterval

时间:2016-04-06 05:20:47

标签: swift nstimer

我一直在制作秒表。

启动,停止和暂停动作效果很好。

然而,当我点击开始动作双倍时间

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

此操作再次开始,时间更快!

我如何阻止此行动?

提前致谢!!!

2 个答案:

答案 0 :(得分:3)

您需要在班级顶部声明一个变量:

 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)
    }

希望这会对你有所帮助。

答案 1 :(得分:0)

我找到了一个简单的答案!!!

然而,上面的答案比我找到的答案简单。

我发现的是

我只需要声明一个变量让我们说

var isStop = true

然后

Timer.scheduledTimerWithTimeInterval()

运行我需要把

isStop = false

以及每次暂停和停止动作 我需要把

isStop = true

感谢大家提醒我思考不同!!