【问题标题】:Swift UISwitch Selector inlineSwift UISwitch 选择器内联
【发布时间】:2023-08-31 14:27:01
【问题描述】:

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

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不喜欢这个,怎么办?

【问题讨论】:

    标签: swift uiswitch


    【解决方案1】:

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

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

    【讨论】: