我正在尝试制作一个弹出按钮,该按钮始终显示一个+作为其图像,当您单击它时,会弹出一个上下文菜单,允许您决定要添加的对象类型。无论如何使用NSPopupButton来做到这一点?我在NSPopupButotn的规范中看到,方法SetImage没有任何效果,所以看起来这可能无法使用这个类。它是否正确?
答案 0 :(得分:8)
为什么不使用NSPopupButton?使用2个按钮执行一项任务似乎并不正确,如上所述,它不按正常方式按住按钮。
要使弹出按钮按您喜欢的方式运行...将其设置为下拉类型。不要给弹出按钮本身任何名称或图像。如果弹出按钮没有名称或图像,则第一个菜单项将成为按钮的标题。菜单项可以有图像,所以不要给第一个菜单项任何标题,只需设置它的图像,这就是你在弹出按钮上看到的图像。对于其余的菜单项,只需在第一个菜单项后正常添加它们。请注意,如果您以编程方式更改代码中的菜单项,只需确保保留第一个菜单项,一切都会正常。我在我的一些应用程序中这样做没有问题。
答案 1 :(得分:4)
关键是使用NSPopUpButtonCell's
setUsesItemFromMenu
: Apple文档包含了如何使用它的示例。
答案 2 :(得分:0)
是的,NSPopUpButton
的可见外观对于您想要的内容是错误的。
你想要的是一个附有菜单的常规NSButton
。在Interface Builder中,清除标题,将“边框”设置为“方形”,将“位置”设置为“仅中心”图标版本,将图像设置为NSAddTemplate
。
然后创建一个NSPopUpButton
,将其设置为“Pull Down”,隐藏,并将其对齐/设置其大小到NSButton的底部。
最后,将performClick:
中的NSButton
与performClick:
上的NSPopUpButton
联系起来。
这不会处理按钮上的点击按住;为此,你必须编写一些代码来使用(非绘图)NSPopUpButtonCell
。
答案 3 :(得分:0)
一个弹出按钮带有Image&与之关联的菜单中第一个菜单项的标题。因此,最好将要作为弹出按钮显示的图像作为第一个菜单项包含在内,然后隐藏其可见性。
如果您还不清楚,请仔细阅读以下视频,这一定会让您明白。
本教程介绍如何使用Interface Builder中的NSToolbar下拉菜单创建工具栏项(NSToolbarItem): Link