【问题标题】:How can I set a timer to 30 seconds and have it restart at 0.0 seconds?如何将计时器设置为 30 秒并让它在 0.0 秒时重新启动?
【发布时间】:2020-05-24 21:32:45
【问题描述】:

我只是在尝试一个小项目。我希望用户能够选择 3 个时间选项之一。如果您选择 30 秒,则计时器将运行 30 秒或 10 秒等,如果您选择该时间。一旦时间用完,我希望它在计时器达到 0.0 时重新启动到所选时间

我的代码可以在 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)
}

【问题讨论】:

    标签: swift xcode timer nstimer


    【解决方案1】:

    您需要将其转换为双重广告,然后像这样检查

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

    【讨论】:

    • 您可以跳过类型转换到NSString,只需使用let intValue = Double(unwrapString)。为了避免混淆,我将其命名为 doubleValue 而不是 intValue
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多