如何停止NSTimer.scheduledTimerWithTimeInterval
我如何阻止我的计时器运行? 不是一个停顿,而是一个停止。
import UIKit class LastManStandingViewController: UIViewController { @IBOutlet weak var timeLabel: UILabel! @IBOutlet weak var timeTextbox: UITextField! @IBOutlet weak var startButton: UIButton! @IBOutlet weak var stopButton: UIButton! var myCounter = 0 var myTimer : NSTimer = NSTimer() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. timeLabel.text = String(myCounter) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func startTimer(){ myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("updateTimer"), userInfo: nil, repeats: true) println("func startTimer") } func stopTimer(){ myTimer.invalidate() myCounter = 0 timeLabel.text = String(myCounter) println("func stopTimer") } func updateTimer(){ timeLabel.text = String(myCounter++) println("func updateTimer") } @IBAction func startButton(sender: AnyObject) { startTimer() } @IBAction func stopButton(sender: AnyObject) { stopTimer() }
}
我可以启动计时器,但是当我按下停止button时,它会自行重置,并重新开始计数。 它不停止。
使它工作。 东西是我的项目越野车! 通过删除button并重新添加它们来修复它。 看起来像我有一个重复或东西。
您不必使用Selector
:
@IBAction func startButton(sender: AnyObject) { myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updateTimer:", userInfo: nil, repeats: true) }
此外,计时器将自己传递给所选的方法,所以如果需要,可以在方法内部使其失效:
func updateTimer(timer: NSTimer) { timeLabel.text = String(Counter++) timer.invalidate() }
或者,如果计时器是一个实例variables:
myTimer.invalidate() myTimer = nil
将实例variables定时器无效之后,它是一件好事,如果您需要创build具有相同variables的另一个定时器,它将避免进一步的混淆。 另外,方法名和variables应该以小写字母开头。
屏幕截图显示定时器无效并设置为零。
更新Swift 2.2+
请参阅https://stackoverflow.com/a/36160191/2227743以获取新的;#selector
语法replaceSelector()
。
你可以使用这个当满足一些条件,你想停止计时器:
Timer.invalidate()
这是一个简单的例子:
func UpdateTimer(){ timeLabel.text = String(Counter++) if timeLabel.text == String("5") { Timer.invalidate() } }
这将停止计时器。
你可以根据你的需要修改它。
正如Swift 2.2之前
let printTimer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(printDescription), userInfo: nil, repeats: true) func printDescription() { print("Print timer will print every after 2.0 seconds") }
打印计时器将在2.0秒后每打印一次