首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSButton RadioGroup (NSMatrix替代方案)

NSButton RadioGroup (NSMatrix替代方案)
EN

Stack Overflow用户
提问于 2015-05-29 13:00:55
回答 3查看 5K关注 0票数 10

我尝试过几次设置几个类似的按钮,它们都连接到同一个IBActions上,但仍然无法复制RadioButton行为。

目前,我有5个按钮,都是一个NSView的子程序。

代码语言:javascript
复制
NSView
    - ButtonOne - NSButton (Square Button)
    - ButtonTwo - NSButton (Square Button)
    - ButtonThree - NSButton (Square Button)
    - ButtonFour - NSButton (Square Button)
    - ButtonFive - NSButton (Square Button)

它们都连接到一个常见的IBAction,它的内容如下:

代码语言:javascript
复制
@IBAction func activityButtonPressed(sender: NSButton) {

    println("\(sender.title) Pressed")

}

它的工作原理是捕获实际的mosueDown事件并将其发送到func (如预期的那样)。

我如何让他们在广播按钮模式下工作?即,当单击各种按钮时,是否让它们的NSOnState和NSOffState切换?

当我尝试将按钮类型更改为Radio时,它会自动切换回“开关”.

干杯,

一个

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-08 05:22:59

既然你特别不想使用NSMatrix..。第一个问题是,如果您使用方形按钮样式,您不能使用收音机类型。要在Interface中使用On类型。

下面是我用来测试这四个按钮的代码:

代码语言:javascript
复制
var buttonList : [NSButton] {
    return [button1, button2, button3, button4]
}

@IBAction func buttonPressed(sender: NSButton) {
    buttonList.forEach {
        $0.state = $0 == sender ? .on : .off
    }
}

如您所见,它遍历所有按钮,测试是否是按下的按钮。在关闭其他按钮的同时,它会打开那个按钮。您需要从那里管理任何您想要的状态,或者检查所有按钮的状态:

代码语言:javascript
复制
func whichButton() -> ActivityState {
   if button1.state == .on { return .one }
   if button2.state == .on { return .two }
   ...
}

其中,ActivityState.one是一些枚举案例,您可以使用它来确定您所处的状态。

票数 8
EN

Stack Overflow用户

发布于 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)。

票数 11
EN

Stack Overflow用户

发布于 2015-05-29 13:33:12

我相信你是在寻找NSMatrix:

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

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

您可以在IBAction中使用sender.selectedColumnsender.selectedRow的任意组合捕获所选内容。

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30530326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档