如何将计时器设置为 30 秒并让它在 0.0 秒重新启动?
How can I set a timer to 30 seconds and have it restart at 0.0 seconds?
我只是在尝试一个小项目。我希望用户能够 select 3 个时间选项之一。如果你 select 30 秒,计时器将 运行 持续 30 秒或 10 秒等,如果你选择那个时间。一旦时间 运行s 结束,我希望它在计时器达到 0.0
时重新启动回到 selected 时间
我的代码适用于任何长达 18 秒的内容。如果将其设置为 19 或更高,则不起作用。我现在不知道为什么它会工作到 18..任何帮助都会很棒。
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var ChangeTime: UILabel!
var defaultTime = 0.0
var timer = Timer()
//buttons
@IBAction func ten(_ sender: UIButton) {
ChangeTime.text = "10"
timerLabel.text = ChangeTime.text
}
@IBAction func thirty(_ sender: UIButton) {
ChangeTime.text = "30"
timerLabel.text = ChangeTime.text
}
@IBAction func seven(_ sender: UIButton) {
ChangeTime.text = "7"
timerLabel.text = ChangeTime.text
}
@IBAction func startTimerBtn(_ sender: UIButton) {
startTimerFunc()
}
func startTimerFunc() {
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.action), userInfo: nil, repeats: true)
defaultTime = Double(Int(ChangeTime.text!)!)
}
@objc func action() {
if timerLabel.text == "0.0" {
timer.invalidate()
defaultTime = 10
startTimerFunc()
}
defaultTime -= 0.1
timerLabel.text = String(format: "%.1f", defaultTime)
}
您需要将其转换为双重广告,然后像这样检查
@objc func action() {
guard let unwrapString = timerLabel.text else { return }
let doubleValue = Double(unwrapString)
if doubleValue == 0.0 {
timer.invalidate()
defaultTime = 10
startTimerFunc()
}
defaultTime -= 0.1
timerLabel.text = String(format: "%.1f", defaultTime)
}
我只是在尝试一个小项目。我希望用户能够 select 3 个时间选项之一。如果你 select 30 秒,计时器将 运行 持续 30 秒或 10 秒等,如果你选择那个时间。一旦时间 运行s 结束,我希望它在计时器达到 0.0
时重新启动回到 selected 时间我的代码适用于任何长达 18 秒的内容。如果将其设置为 19 或更高,则不起作用。我现在不知道为什么它会工作到 18..任何帮助都会很棒。
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var ChangeTime: UILabel!
var defaultTime = 0.0
var timer = Timer()
//buttons
@IBAction func ten(_ sender: UIButton) {
ChangeTime.text = "10"
timerLabel.text = ChangeTime.text
}
@IBAction func thirty(_ sender: UIButton) {
ChangeTime.text = "30"
timerLabel.text = ChangeTime.text
}
@IBAction func seven(_ sender: UIButton) {
ChangeTime.text = "7"
timerLabel.text = ChangeTime.text
}
@IBAction func startTimerBtn(_ sender: UIButton) {
startTimerFunc()
}
func startTimerFunc() {
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.action), userInfo: nil, repeats: true)
defaultTime = Double(Int(ChangeTime.text!)!)
}
@objc func action() {
if timerLabel.text == "0.0" {
timer.invalidate()
defaultTime = 10
startTimerFunc()
}
defaultTime -= 0.1
timerLabel.text = String(format: "%.1f", defaultTime)
}
您需要将其转换为双重广告,然后像这样检查
@objc func action() {
guard let unwrapString = timerLabel.text else { return }
let doubleValue = Double(unwrapString)
if doubleValue == 0.0 {
timer.invalidate()
defaultTime = 10
startTimerFunc()
}
defaultTime -= 0.1
timerLabel.text = String(format: "%.1f", defaultTime)
}