我知道我应该添加这样的目标:
mySwitch.addTarget(self, action: Selector("selector"), for: UIControlEvents.valueChanged)
Run Code Online (Sandbox Code Playgroud)
但我不想为选择器使用单独的函数,所以我想做这样的事情:
mySwitch.addTarget(self, action: Selector {
if mySwitch.on {
label.text = "Yes, Please! - For:"
........
}
}, for: UIControlEvents.valueChanged)
Run Code Online (Sandbox Code Playgroud)
swift不喜欢这个,我怎么能这样做?
不幸的是,你无法直接做到这一点.请记住,您正在处理Cocoa框架.它是古老而老式的,用Objective-C编写.它早在Objective-C出现之前就已经写好了,早在Swift存在之前.它没有将UIControl的动作函数描述为函数(或者你正在做的匿名函数体)的概念; 它必须是一个选择器,实际上,它只是目标中方法的名称.
你也许可以写一个扩展到UIControl,或者至少是一个实现这种事情的UISwitch子类,或者可能有第三方框架可以帮助你; 但事实上,你的想法虽然对于习惯于斯威夫特的人来说足够自然,但注定要失败.
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |