Swift Xcode v7.2-新单选按钮:如何查找选定项

Swift Xcode v7.2-新单选按钮:如何查找选定项,swift,macos,interface-builder,xcode7,nsbutton,Swift,Macos,Interface Builder,Xcode7,Nsbutton,我试图使用Xcode 7的新单选按钮模板(NSButton)检测当前选择的单选按钮 我创建了一个简单的操作,当选中单选按钮时,该操作将打印以记录发件人的标题。这确实有效: @IBAction func radioButtonClicked(sender: AnyObject) { print(sender.selectedCell()!.title); } 但我真正想要的是能够知道在我的代码中的其他地方选择了哪个单选按钮(特别是在iAction上单击按钮)。我试过: @

我试图使用Xcode 7的新单选按钮模板(NSButton)检测当前选择的单选按钮

我创建了一个简单的操作,当选中单选按钮时,该操作将打印以记录发件人的标题。这确实有效:

@IBAction func radioButtonClicked(sender: AnyObject)
    {
    print(sender.selectedCell()!.title);
    }
但我真正想要的是能够知道在我的代码中的其他地方选择了哪个单选按钮(特别是在iAction上单击按钮)。我试过:

@IBAction func uploadButtonPressed(sender: AnyObject)
    {
    print (radioButton.selectedCell()!.title);
    }
这是编译和执行的,问题是它总是给我第一个单选按钮的标题,而不是实际选中的那个

有什么想法吗


我能得到的“最接近的”结果(虽然不是很干净,但效果“有点”)是看radioButton.cell?state是否为1。这告诉我第一个单选按钮被选中。但这是一种非常糟糕的编码方式,只允许2个单选按钮选项

if (radioButton.cell?.state == 1)
    {
    print ("Radio 1 Selected");
    }
else
    {
    print ("Radio 2 Selected");
    }

我最终找到了解决这个问题的方法

首先,我设置一个变量来存储选中的项目(并将该值预先设置为第一个单选按钮所需的值)

然后比较以查看所选项目的标题值:

@IBAction func radioButtonClicked(sender: AnyObject)
    {
    if ((sender.selectedCell()!.title) == "Trickle Add")
        {
        databaseUploadMethod = "trickle-add";
        }
    else if ((sender.selectedCell()!.title) == "Bulk Add All Now")
        {
        databaseUploadMethod = "bulk-add";
        }
    }

供参考:我有两个单选按钮,第一个标题是“涓流添加”,第二个标题是“现在批量添加所有内容”。这些是我在if语句中比较的值。

使用Interface Builder中的identifier或tag属性来区分单选按钮,如:

@IBAction func selectOption(sender: AnyObject) {
    let id:String = sender.identifier!!
    case "first identifier":
        // do some stuff
        // ...
    default:
        // do default stuff
}
另一个选项是开关箱语句,并为每个单选按钮定义插座,如:

@IBOutlet weak var firstOption: NSButton!
@IBOutlet weak var secondOption: NSButton!
@IBOutlet weak var thirdOption: NSButton!

@IBAction func selectOption(sender: AnyObject) {

    switch sender as! NSButton {
    case firstOption:
        print("firstOption")
    case secondOption:
        print("secondOption")
    case thirdOption:
        print("thirdOption")
    default:
        print("won't be called when exhaustive but must always be implemented")
    }
}
@IBOutlet weak var firstOption: NSButton!
@IBOutlet weak var secondOption: NSButton!
@IBOutlet weak var thirdOption: NSButton!

@IBAction func selectOption(sender: AnyObject) {

    switch sender as! NSButton {
    case firstOption:
        print("firstOption")
    case secondOption:
        print("secondOption")
    case thirdOption:
        print("thirdOption")
    default:
        print("won't be called when exhaustive but must always be implemented")
    }
}