【问题标题】:Group of NSButton as radio button's groupNSButton 组作为单选按钮组
【发布时间】:2023-04-11 05:48:01
【问题描述】:

根据 Big Nerd Ranch 的书“用于 OS X 的 Cocoa 编程”,使用 NSMatrix 的旧方式将被弃用。 新方法是使用NSButton 的多个实例,并将样式设置为Radio。 来自同一无线电组的每个NSButton 应分配给一个共享的@IBAction 方法。并且在这个action方法中使用tag属性来区分它们。

问题是:当前选中的NSButton 来自单选组如何获得另一个按钮被单击的通知,并且当前按钮应将其状态更改为未选中?

我知道问题:How to create NSRadioButton Group in Xcode 7 OSX,但我的问题不在于如何创建它。问题是消息如何到达其他 NSButton 视图?因为 Action 是在 Window 控制器类上执行的,而不是在视图上。

图片如下:

--> NSButton 发送@IBAction ViewController.radioButtonPressed 窗口-| --> NSButton 发送@IBAction ViewController.radioButtonPressed

但是这两个实例如何在它们之间交换状态信息? 似乎它们和ViewController之间只有一种方式通信?一个按钮如何知道另一个按钮被按下?

【问题讨论】:

  • 创建一个变量来保持当前状态(标签或对按钮的引用)。如果状态发生变化,将代表当前状态的按钮设置为OFF,将sender设置为ON,并将sender保持为当前状态
  • 感谢您的帮助。我已经创建了效果很好的单选按钮,但我想了解引擎盖下的工作原理。两个单独的视图如何获取有关其状态的信息,而它们只能向 viewController 类发送消息。

标签: swift cocoa


【解决方案1】:

按钮位于视图层次结构中,因此它可以请求其superview。然后它可以迭代superviewssubviews,寻找单选按钮类型的NSButton并比较action选择器来建立一个组。

【讨论】:

    猜你喜欢
    • 2013-03-13
    • 2014-04-11
    • 2018-04-07
    • 2013-02-25
    • 2018-12-14
    • 1970-01-01
    • 2011-08-28
    • 2011-02-12
    相关资源
    最近更新 更多