Swift UISwitch 选择器内联

Posted

技术标签:

【中文标题】Swift UISwitch 选择器内联【英文标题】:Swift UISwitch Selector inline 【发布时间】:2016-11-14 21:02:35 【问题描述】:

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

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】:

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

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

【讨论】:

以上是关于Swift UISwitch 选择器内联的主要内容,如果未能解决你的问题,请参考以下文章

使用内联选择器的 UITableView 滚动性能

React 伪选择器内联样式

尤里卡内联选择器行选择第一行

更改内联日期选择器角度材料的标题

内联日期选择器在第二次尝试时崩溃

如何更改引导内联日期选择器以适应全宽