【问题标题】:How to make segmented control with menu like in the Xcode toolbar如何使用 Xcode 工具栏中的菜单进行分段控制
【发布时间】:2015-09-27 01:28:13
【问题描述】:

我想在我的 OS X 应用程序中添加一个带有菜单的分段控件,如 Xcode 工具栏中的。会在三个屏幕之间切换,也需要在每个屏幕中都有一些菜单形式的选项。

当我向标准分段控件添加菜单时,它不允许“选择一个”模式。

【问题讨论】:

    标签: xcode macos cocoa nssegmentedcontrol segmentedcontrol


    【解决方案1】:

    此功能是内置的。在代码中,您可以只使用NSSegmentedControl(或NSSegmentedCell)的-setMenu:forSegment: 方法。在 Interface Builder 中,只需从 Object 库中拖动一个菜单并将其放在适当的段上。

    要允许在单击时选择带有菜单的段,您可能需要使用 NSSegmentedControl 的自定义子类覆盖 -startTrackingAt:inView: 以在调用 super 之前将段设置为选中。

    【讨论】:

    • 看来我应该滚动我自己的子类来实现该行为,无法使用标准控件实现所需的行为......
    【解决方案2】:

    我能够很容易地完成你想要的。

    我将分段控件的trackingMode设置为NSSegmentSwitchTrackingMomentary

    然后我为分段控件创建了一个 IBAction:

    - (IBAction)selectionChanged:(NSSegmentedControl *)sender {
        [NSMenu popUpContextMenu:[NSApp mainMenu] withEvent:[NSApp currentEvent] forView:sender];
    }
    

    那么它看起来像下面这样:

    【讨论】:

    • 这是解决您问题的最简单方法。如果你想在那里做一些更特别的事情,你必须对分段控件进行子类化并从那里开始工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2021-09-14
    相关资源
    最近更新 更多