Swift UISwitch选择器内联

时间:2016-11-14 21:02:36

标签: swift uiswitch

我知道我应该添加这样的目标:

mySwitch.addTarget(self, action: Selector("selector"), for: UIControlEvents.valueChanged)

但我不想为选择器设置单独的功能,所以我想做这样的事情:

mySwitch.addTarget(self, action: Selector {
    if mySwitch.on {
        label.text = "Yes, Please! - For:"
        ........
    }
}, for: UIControlEvents.valueChanged)

swift不喜欢,我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

不幸的是,你不能直接这样做。请记住,您正在处理Cocoa框架。它是古老的,用Objective-C编写的。它早在Objective-C阻塞之前编写,并且在Swift存在之前 long 。它没有将UIControl的动作函数概念描述为函数(或匿名函数体,正如你所做的那样);它必须是选择器,实际上只是目标中方法的名称

你或许可以写一个扩展到UIControl,或者至少是一个UISwitch子类,它实现了这种东西,或者可能有第三方框架可以帮助你;但事实上,你的想法虽然对于习惯于斯威夫特的人来说足够自然,但注定要失败。