- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是一名在 Xcode 8 中学习 Swift 3 的初学者,我正在构建一个名为“Eggtimer”的基本应用程序。代码写在下面,我不明白 timerlabel.text
是如何链接到计时器的,即使我没有在它们之间设置任何连接。
在星形 //*
旁边,我们还可以写 } else { timer.invalidate()
并且 labeltimer.text
很好地停止减少,怎么可能发生? timer
属性中的selector
是什么意思?抱歉我的英语不好,感谢您的回答。
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)
}
}
最佳答案
让我们从底部开始:selector
指定应该每 1 秒调用一次的方法(timeInterval
参数)。在您的情况下,这应该更改为以下内容:
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.decreasetimer), userInfo: nil, repeats: true)
如您所见,选择器
称为decreasetimer
,这是您在顶部指定的方法。
计时器现在每次更新时都会调用此方法。在此方法中,您减少了 time
var 并更新了 timerlabel
的文本。
timer.invalidate()
在 time
达到 0 时停止 timer
。
我希望这能澄清您的问题。
关于swift - 想了解关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40258310/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!