想要了解一个关系

时间:2016-10-26 09:18:13

标签: swift

我是初学者,在Xcode 8中学习Swift 3,我正在构建一个名为" Eggtimer"的基本应用程序。代码写在下面,我不明白timerlabel.text如何与计时器相关联,即使我没有设置它们之间的任何连接。

在明星//*旁边,我们也可以写} else { timer.invalidate()labeltimer.text很快停止减少,它会如何发生? selector属性中的timer是什么意思? 对不起我的英文,谢谢你的回答。

class ViewController: UIViewController {
    var timer = Timer()
    var time = 210

    func decreasetimer() {
        if time > 0 {
            time -= 1
            timerlabel.text = String(time)
        } else { //*
            timerlabel.text = String(time)
        }
    }

    @IBOutlet var timerlabel: UILabel!

    @IBAction func timerstarter(_ sender: AnyObject) {        
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.processtimer), userInfo: nil, repeats: true)
    }
}     

1 个答案:

答案 0 :(得分:2)

让我们从底部开始:selector指定应该每1秒调用一次的方法(timeInterval参数)。在您的情况下,应将其更改为以下内容:

timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.decreasetimer), userInfo: nil, repeats: true)

正如您所看到的,selector被称为decreasetimer,这是您在顶部指定的方法。

计时器现在每次更新时都会调用此方法。在此方法中,您将减少time var并更新timerlabel

的文本 当timer.invalidate()达到0时,

timer会停止time

我希望这能澄清你的问题。