尝试识别发件人时缺少单选按钮的标识符

Posted

技术标签:

【中文标题】尝试识别发件人时缺少单选按钮的标识符【英文标题】:Missing Identifier for Radio Button when trying to identify the Sender 【发布时间】:2020-04-17 19:00:18 【问题描述】:

我正在尝试使用界面生成器标识符来识别单击的单选按钮。

 @IBAction func text_radio_changed(_ sender: Any) 
        let button:NSButton = sender as! NSButton
        let id:String = button.accessibilityIdentifier()
        print("===========>"+id)
    

但是控制台一直打印这个

===========>

没有标识符

【问题讨论】:

您可以将 IBOutlet 连接到每个按钮,将您的方法签名更改为 (_ button: NSButton)` 然后switch button case button1: ... case button2 ... default: break @LeoDabus 'button1' 是什么?标识符? 当您将 IBOutlet 连接到您的按钮时,您可以选择任何您想要的名称 @LeoDabus 所有单选按钮都连接到一个插座。只有 1 个是手动连接的,其余的是复制粘贴。 我不明白你的意思。如果您以编程方式创建按钮,则为您的 var 的名称。如果您使用故事板创建它,则可以在将其连接到 IBOutlet 时选择任何名称 【参考方案1】:

button.accessibilityIdentifier 是可访问性身份标识符。身份标识符是button.identifier

@IBAction func text_radio_changed(_ sender: Any) 
    let button:NSButton = sender as! NSButton
    let id:String = button.identifier!.rawValue
    print("===========>"+id)

【讨论】:

我试过了,但是 button.identifier 不是字符串。你调试过你的代码吗?【参考方案2】:

在您的代码中,您实际上是在尝试访问可访问性标识符,这是另一回事。要识别单选按钮,您应该使用标签。为按钮设置一个标签,然后像这样读取它。

@IBAction func text_radio_changed(_ sender: Any) 
    let button:NSButton = sender as! NSButton
    let id:Int = button.tag
    print("===========>"+id)

注意:您实际上可以使用可访问性 id 来做同样的事情。检查这个其他类似的post。

更新:“Willeke”的答案似乎更好(如果可行的话),我习惯于为 ios 开发,但我不知道有标识符NSButtons 的属性。

【讨论】:

我知道标签可以用来达到同样的效果。但我更喜欢字符串而不是数字 您可以使用枚举来保存所有不同的值,并赋予它们等效的字符串。或者查看我的答案中的超链接,其中包含有关如何使用使用字符串的可访问性标识符的说明。

以上是关于尝试识别发件人时缺少单选按钮的标识符的主要内容,如果未能解决你的问题,请参考以下文章

如何用单选按钮替换 Groupbox Text 属性?

选中单选按钮时如何播放动画?

创建自定义单选按钮

Android:保存单选按钮的状态

如何使用 Bootstrap v3.4.1 设置禁用(也选中)单选按钮的样式?

reactjs 如何处理一个组件中的多个单选按钮组?