NSTimer() - timer.invalidate无法使用简单的秒表?

时间:2014-11-07 09:03:46

标签: swift

我有点想做什么,程序运行,但是timer.invalidate()不起作用?欢迎任何提示。

我过去使用过这个程序并通过它完成了,timer.invalidate()运行得很完美。我不相信它与我把它放入函数的事实有关,因为在我只是输入“timer.invalidate()”而不是“stop()”

之前它没有工作

每当我点击iOS模拟器上的取消按钮时,它只会将其重置为0,但会继续计数。

提前致谢。

import UIKit

class ViewController: UIViewController {
var timer = NSTimer()
var count = 0
@IBOutlet weak var timeDisplay: UILabel!
@IBAction func playButton(sender: AnyObject) {
    //play button
    var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
}

@IBAction func resetTimer(sender: AnyObject) {
    //cancel button
    stop()
    count = 0
    timeDisplay.text = "0"
}


@IBAction func pauseButton(sender: AnyObject) {
    stop()
}

func result() {
    count++
    timeDisplay.text = String(count)
}

func stop () {
    timer.invalidate()
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
 }
}

1 个答案:

答案 0 :(得分:4)

playButton()中,您定义了另一个计时器,但该功能无法在此功能外部失效 - 因此,通过调用timer.invalidate(),您只会使var timer = NSTimer()无效其中没有任何设置计时器。

所以替换

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

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