我尝试过几次设置几个类似的按钮,它们都连接到同一个IBActions上,但仍然无法复制RadioButton行为。
目前,我有5个按钮,都是一个NSView的子程序。
NSView
- ButtonOne - NSButton (Square Button)
- ButtonTwo - NSButton (Square Button)
- ButtonThree - NSButton (Square Button)
- ButtonFour - NSButton (Square Button)
- ButtonFive - NSButton (Square Button)它们都连接到一个常见的IBAction,它的内容如下:
@IBAction func activityButtonPressed(sender: NSButton) {
println("\(sender.title) Pressed")
}它的工作原理是捕获实际的mosueDown事件并将其发送到func (如预期的那样)。
我如何让他们在广播按钮模式下工作?即,当单击各种按钮时,是否让它们的NSOnState和NSOffState切换?
当我尝试将按钮类型更改为Radio时,它会自动切换回“开关”.
干杯,
一个
发布于 2015-06-08 05:22:59
既然你特别不想使用NSMatrix..。第一个问题是,如果您使用方形按钮样式,您不能使用收音机类型。要在Interface中使用On类型。
下面是我用来测试这四个按钮的代码:
var buttonList : [NSButton] {
return [button1, button2, button3, button4]
}
@IBAction func buttonPressed(sender: NSButton) {
buttonList.forEach {
$0.state = $0 == sender ? .on : .off
}
}如您所见,它遍历所有按钮,测试是否是按下的按钮。在关闭其他按钮的同时,它会打开那个按钮。您需要从那里管理任何您想要的状态,或者检查所有按钮的状态:
func whichButton() -> ActivityState {
if button1.state == .on { return .one }
if button2.state == .on { return .two }
...
}其中,ActivityState.one是一些枚举案例,您可以使用它来确定您所处的状态。
发布于 2016-01-16 21:51:21
只需给NSRadioButtons提供相同的超级视图和操作即可。正如好道格在回答中所指出的,
…如果您使用的是方形按钮样式,则不能使用无线电类型。要在Interface中使用On类型。
我真的不想让动作方法设置组…中所有按钮的状态让AppKit为你做这件事。
来自OS X开发人员发行说明:可可应用框架(10.10及更高版本)
配置为单选按钮的NSButton (将-buttonType设置为NSRadioButton)现在将在单选按钮组中操作,用于10.8及更高版本上链接的应用程序。若要使按钮在无线电组中工作,请对每个-action实例使用相同的NSButton,并对每个按钮使用相同的超级视图。当满足这些条件时,检查一个按钮(通过将-state更改为1),将取消所有其他按钮(将其-state设置为0)。
发布于 2015-05-29 13:33:12
我相信你是在寻找NSMatrix:

您可以使用任意数量的行和列来配置它:

然后,您可以选择是允许一个单一的选择还是允许一个品种:

您可以在IBAction中使用sender.selectedColumn和sender.selectedRow的任意组合捕获所选内容。
https://stackoverflow.com/questions/30530326
复制相似问题