Swift: Using Selectors with Multiple Arguments(SWIFT:使用带有多个参数的选择器)
本文介绍了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,
最后,我想保留一个与我的模型的对象相关联的计时器,并且仅在我的应用程序视图中更新和显示该时间。这是正确的做法吗?推荐答案
我的印象是这是SWIFT用来在选择器中调用多个参数方法的语法:`selector:"方法名称:参数名称:"
在某种程度上这是正确的,但如果您要使用NSTmer,那么它不会减轻您阅读NSTmer上的文档的责任。特别是,它不会改变由NSTmer调用的选择器不由您决定这一事实。它的形式只能是methodName:
,因为它只有一个参数--计时器(不是标签或其他任何东西)。正如已经告诉您的,如果您有其他信息要传递,请将其附加到计时器,这是将传递的信息。
现在,除了,您在如何声明方法名称方面也是错误的。声明为func decTimeByOne(labelToUpdate : UILabel
的方法的选择器为decTimeByOne:
。同样,这不是由您决定的;您必须知道如何创建选择器的规则。
这篇关于SWIFT:使用带有多个参数的选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SWIFT:使用带有多个参数的选择器
基础教程推荐
猜你喜欢
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01