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

时间:2018-04-27 15:51:49

标签: cocoa appkit nspopupbutton nstoolbar

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

Flag menu from Mail.app

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

我还希望添加NSPopupButton作为自定义视图可以正常工作,但这会使整个视图成为菜单,而我希望组件的左侧部分表现得像普通按钮,右边下拉部分显示菜单。

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

当用户点击任一细分时,您的操作方法需要使用selectedSegment来决定是否执行与“按钮”相关联的操作或忽略点击(让菜单显示为对方)。