【问题标题】:How can I implement a radio button in OSX, Xcode 8, Swift 3?如何在 OSX、Xcode 8、Swift 3 中实现单选按钮?
【发布时间】:2017-05-23 04:41:16
【问题描述】:

我正在尝试在 OSX、Xcode 8、Swift 3 中实现单选按钮。我可以在过去的 Xcode 迭代中使用单选按钮组来实现这一点。我相信应该有一种方法可以在 Xcode 中对单选按钮进行分组,以便它们的选择是独占的,但我不知道如何。有人可以解释一下现在该怎么做吗?

Apple documentation 解释说

配置为单选按钮的 NSButton(将 -buttonType 设置为 NSRadioButton),现在将在一个单选按钮组中操作 在 10.8 及更高版本上链接的应用程序。让按钮在一个 单选组,对每个 NSButton 实例使用相同的 -action,并具有 每个按钮的超级视图相同。满足这些条件时, 检查一个按钮(通过将 -state 更改为 1),将取消选中所有 其他按钮(通过将它们的 -state 设置为 0)。

...但我无法在 Interface Builder 中弄清楚如何为每个 NSButton 实例分配相同的操作。我从第二个按钮拖动到 Xcode IDE 中的一个动作,它似乎无法选择相同的动作。有人能解释一下正确的流程吗?

非常感谢!

【问题讨论】:

    标签: swift xcode macos swift3


    【解决方案1】:

    看起来 IDE 中可能存在错误 — 如果操作具有 Any 类型的参数,它会感到困惑。您可以通过修改操作方法以明确接受NSButton 发件人来解决它:

    【讨论】:

    • 这非常有用——我花了一分钟才在 gif 中发现您慷慨地提供了您需要连接的是“First Responder”。谢谢!
    • 我连接的实际上是 App Delegate 对象。 First Responder 也可能起作用,具体取决于您的响应者链的设置方式。但我认为使用视图控制器对象是很常见的(如果你有一个,那就是——它们在 iOS 上更常见,但现在 macOS 等效的 NSViewController 比以前功能更全)。
    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多