本文介绍了SWIFT:使用带有多个参数的选择器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在我的应用程序模型中保留一个NSTmer,并在我的视图控制器文件中更新时间。为此,我创建了以下两个方法:
func startTimer(labelToUpdate : UILabel) {
timerGoing = true
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "decTimeByOne:labelToUpdate:", userInfo: labelToUpdate, repeats: true)
}
func decTimeByOne(labelToUpdate : UILabel) {
if timerGoing {
if decreasingTime > 0 {
decreasingTime--;
labelToUpdate.text = "(decreasingTime)"
}
else {
timerGoing = false
timer.invalidate()
}
}
}
我在控制台中收到运行时异常(我相信),有一个"无法识别的选择器"。在做了一些研究后,我的印象是这是SWIFT在选择器中调用多个参数方法所使用的语法:selector:"method Name:argumentName:",userInfo:argumentPassedIn,
最后,我想保留一个与我的模型的对象相关联的计时器,并且仅在我的应用程序视图中更新和显示该时间。这是正确的做法吗?推荐答案
在某种程度上这是正确的,但如果您要使用NSTmer,那么它不会减轻您阅读NSTmer上的文档的责任。特别是,它不会改变由NSTmer调用的选择器不由您决定这一事实。它的形式只能是methodName:
,因为它只有一个参数--计时器(不是标签或其他任何东西)。正如已经告诉您的,如果您有其他信息要传递,请将其附加到计时器,这是将传递的信息。
现在,除了,您在如何声明方法名称方面也是错误的。声明为func decTimeByOne(labelToUpdate : UILabel
的方法的选择器为decTimeByOne:
。同样,这不是由您决定的;您必须知道如何创建选择器的规则。
这篇关于SWIFT:使用带有多个参数的选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!