Swift 内联 UISwitch 选择器

Swift UISwitch Selector inline

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

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 不喜欢,我该怎么做?

很遗憾,您不能直接执行此操作。请记住,您正在处理 Cocoa 框架。又老又老套,用Objective-C写的。而且它是在 Objective-C 有块之前很久就写的,并且 long 在 Swift 存在之前就已经写好了。它没有将 UIControl 的操作函数描述为 function(或匿名函数体,正如您所做的那样)的概念;它必须是一个选择器,也就是说,实际上,目标中的方法只是名称

您或许可以编写 UIControl 的扩展,或者至少是 UISwitch 的子类,以实现此类功能,或者可能有第三方框架可以帮助您;但就目前情况而言,您的想法虽然对于习惯 Swift 的人来说足够自然,但注定要失败。