NSToolbar 中的下拉菜单,如 Mail.app

Drop-down menu in NSToolbar like Mail.app

我想要一个带有下拉菜单的工具栏按钮,例如 Mail.app 中工具栏中的 "Flag" 按钮:

我希望制作一个普通的 NSMenuItem 并添加一个菜单作为 menuFormRepresentation 就可以了,但该菜单仅在按钮进入溢出模式时出现。

我还希望添加一个 NSPopupButton 作为自定义视图会起作用,但这会使整个视图成为一个菜单,而我希望组件的左侧部分表现得像一个普通按钮,并且右边的下拉部分调出菜单。

是否有一些技巧可以使 NSToolbarItem 显示这样的组件,或者这两个自定义视图是否粘在一起?

这里 NSToolbar 没有什么神奇之处。这只是您可以设置的方法之一 NSSegmentedControl,无论它是显示为工具栏项的自定义视图还是单独显示。

您无法在 Interface Builder(故事板)中进行设置,但 NSSegmentedControl 具有用于将菜单分配给段的 API:

segmentControl.setMenu(myMenu, forSegment: 1)
segmentControl.setShowsMenuIndicator(true, forSegment: 1) // for the little arrow

您可能希望将跟踪模式设置为 momentary,因为您的段控件充当一组视觉上连接的按钮,而不是 N 个选择器。

当用户点击任一片段时,您的操作方法将需要使用 selectedSegment 来决定是执行与 "button" 侧关联的操作还是忽略点击(让菜单显示另一边)。