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

mar*_*rux 4 cocoa appkit nstoolbar nspopupbutton

我想要一个带有附加的下拉菜单的工具栏按钮,例如Mail.app工具栏中的“标记”按钮:

来自Mail.app的标志菜单

我希望可以像这样正常制作NSMenuItem并添加菜单menuFormRepresentation,但是该菜单仅在按钮进入溢出模式时才会出现。

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

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

ric*_*ter 6

这里没有什么神奇的NSToolbarNSSegmentedControl不管它是作为工具栏项的自定义视图显示还是单独显示,这都是设置方式之一。

您不能在Interface Builder(故事板)中进行设置,但是NSSegmentedControl具有用于将菜单分配给细分受众群的API:

segmentControl.setMenu(myMenu, forSegment: 1)
segmentControl.setShowsMenuIndicator(true, forSegment: 1) // for the little arrow
Run Code Online (Sandbox Code Playgroud)

您可能希望将跟踪模式设置为momentary,因为您的细分控件是一组视觉连接的按钮,而不是“一选一”选择器。

当用户单击任一细分时,您的操作方法将需要使用selectedSegment来决定是执行与“按钮”侧相关联的操作还是忽略单击(使菜单显示在另一侧)。