带有静态图像的弹出按钮(Cocoa OSX)

时间:2010-04-19 16:49:52

标签: cocoa macos nspopupbutton

我正在尝试制作一个弹出按钮,该按钮始终显示一个+作为其图像,当您单击它时,会弹出一个上下文菜单,允许您决定要添加的对象类型。无论如何使用NSPopupButton来做到这一点?我在NSPopupButotn的规范中看到,方法SetImage没有任何效果,所以看起来这可能无法使用这个类。它是否正确?

4 个答案:

答案 0 :(得分:8)

为什么不使用NSPopupButton?使用2个按钮执行一项任务似乎并不正确,如上所述,它不按正常方式按住按钮。

要使弹出按钮按您喜欢的方式运行...将其设置为下拉类型。不要给弹出按钮本身任何名称或图像。如果弹出按钮没有名称或图像,则第一个菜单项将成为按钮的标题。菜单项可以有图像,所以不要给第一个菜单项任何标题,只需设置它的图像,这就是你在弹出按钮上看到的图像。对于其余的菜单项,只需在第一个菜单项后正常添加它们。请注意,如果您以编程方式更改代码中的菜单项,只需确保保留第一个菜单项,一切都会正常。我在我的一些应用程序中这样做没有问题。

答案 1 :(得分:4)

关键是使用NSPopUpButtonCell's setUsesItemFromMenu: Apple文档包含了如何使用它的示例。

答案 2 :(得分:0)

是的,NSPopUpButton的可见外观对于您想要的内容是错误的。

你想要的是一个附有菜单的常规NSButton。在Interface Builder中,清除标题,将“边框”设置为“方形”,将“位置”设置为“仅中心”图标版本,将图像设置为NSAddTemplate

然后创建一个NSPopUpButton,将其设置为“Pull Down”,隐藏,并将其对齐/设置其大小到NSButton的底部。

最后,将performClick:中的NSButtonperformClick:上的NSPopUpButton联系起来。

这不会处理按钮上的点击按住;为此,你必须编写一些代码来使用(非绘图)NSPopUpButtonCell

答案 3 :(得分:0)

一个弹出按钮带有Image&与之关联的菜单中第一个菜单项的标题。因此,最好将要作为弹出按钮显示的图像作为第一个菜单项包含在内,然后隐藏其可见性。

如果您还不清楚,请仔细阅读以下视频,这一定会让您明白。

本教程介绍如何使用Interface Builder中的NSToolbar下拉菜单创建工具栏项(NSToolbarItem): Link