启动计时器按钮单击Swift



ive在Swift中创建了一个计时器,以在按下按钮时一次又一次地将Uislider从另一端移到另一端。但是我总是在计时器线上得到一个断点,尽管一切都应该是正确的。

@IBAction func setSliderValue(_ sender: UIButton){
        mytimer =  Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
    }

    func timerAction(){
        let Range =  slider.maximumValue - slider.minimumValue;
        let Increment = Range/100;
        let newval = slider.value + Increment;
        if(Increment >= slider.maximumValue)
        {
            slider.setValue(newval, animated: true)
        }
        else 
        {
            slider.setValue(0, animated: true)
        }
    }

检查功能的检查不正确。

func timerAction(){
    let range =  slider.maximumValue - slider.minimumValue
    let increment = range/100
    let newval = slider.value + increment
    if newval <= slider.maximumValue {
        slider.setValue(newval, animated: true)
    } else {
        slider.setValue(slider.minimumValue, animated: true)
    }
}

在您的活动处理程序中,还应在实施新的时,首先将计时器(如果不是零)无效。

现在使用以下代码工作,尽管滑块仅从左向右移动,直到它被无效为止。

@IBAction func setSliderValue(_ sender: UIButton){
        mytimer =  Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
        /*slider.setValue(100, animated: true)
        print("The value of the slider is now (slider.value)")
        sliderValue = Int(slider.value)*/
    }

    func timerAction(){
        let Range =  slider.maximumValue - slider.minimumValue;
        let Increment = Range/100;
        let newval = slider.value + Increment;
        if(Increment <= slider.maximumValue)
        {
            slider.setValue(newval, animated: true)
            print("The value of the slider is now (slider.value)")
            sliderValue = Int(slider.value)
        }
        else if (Increment >= slider.minimumValue)
        {
            slider.setValue(newval, animated: true)
        }
    }

希望如果其他人在任务上需要帮助"启动计数计时器"按钮单击"。

"

计时器本身必须被声明为的内部,并另外创建一个OBJ-C函数以更新将连接的#Selector的计时器。

class ViewController: UIViewController {
    var myTimer = Timer()
    var secondsToCount = 100
    
     @IBAction func buttonTapped(_ sender: UIButton) {
    
            myTimer.invalidate() 
            myTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
        }
        
        @objc func updateTimer() {
            secondsToCount -= 1
            timerDisplayed.text = String(secondsToCount)
        }
}

TimerDisplayed 是我连接的标签,以查看应用程序屏幕上的计时器值。

Swift 5.3&amp;Xcode 12.0.1

最新更新