【发布时间】: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 类发送消息。