如何使用 Xcode 工具栏中的菜单进行分段控制

How to make segmented control with menu like in the Xcode toolbar

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

当我向其添加菜单时,标准分段控件不允许 "Select one" 模式。

我能够很轻松地完成您想要的东西。

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

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

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

然后看起来像下面这样:

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

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