尝试识别发件人时缺少单选按钮的标识符
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 的属性。
【讨论】:
我知道标签可以用来达到同样的效果。但我更喜欢字符串而不是数字 您可以使用枚举来保存所有不同的值,并赋予它们等效的字符串。或者查看我的答案中的超链接,其中包含有关如何使用使用字符串的可访问性标识符的说明。以上是关于尝试识别发件人时缺少单选按钮的标识符的主要内容,如果未能解决你的问题,请参考以下文章