gpt4 book ai didi

swift - 构建一个小型计时器应用程序,为什么应用程序计时器不会停止两个标签?

转载 作者:行者123 更新时间:2023-11-30 13:37:48 25 4
gpt4 key购买 nike

我正在构建一个计时器应用程序

我有一个按钮可以启动计时器并更改两个标签我有另一个按钮可以用 .invalidete 停止计时器。

问题是当计时器启动时,两个标签都会以它们预期的设定速率发生变化

但是当我按下停止按钮时,只有第二个计时器标签停止变化,第一个标签似乎继续变化,我不知道为什么

import UIKit

class ViewController: UIViewController {

var timer = NSTimer()
var counter = 0
var counter2 = 0

@IBOutlet weak var label: UILabel!
@IBOutlet weak var label2: UILabel!

@IBAction func start(sender: AnyObject){
counter = 0
label.text = String(counter)

timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "updateCounter", userInfo: nil, repeats: true)


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


func updateCounter2(){
counter2 += 1
label2.text = String(counter2)
}


func updateCounter(){
counter += 1
label.text = String(counter)
}

@IBAction func stop(sender: AnyObject) {
timer.invalidate()
timer.invalidate()
}


}

最佳答案

你不想做的是这样的事情:

var timer:NSTimer!
var timer2:NSTimer!
var counter = 0
var counter2 = 0

@IBOutlet weak var label: UILabel!
@IBOutlet weak var label2: UILabel!

@IBAction func start(sender: AnyObject){
counter = 0
label.text = String(counter)

timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "updateCounter", userInfo: nil, repeats: true)


timer2 = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updateCounter2", userInfo: nil, repeats: true)
}


func updateCounter2(){
counter2 += 1
label2.text = String(counter2)
}


func updateCounter(){
counter += 1
label.text = String(counter)
}

@IBAction func stop(sender: AnyObject) {
timer.invalidate()
timer2.invalidate()
}

观看this talk在 WWDC 2015 的值类型中,它解释了一些您可能会觉得有用的 OOP 知识。

关于swift - 构建一个小型计时器应用程序,为什么应用程序计时器不会停止两个标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com