带有静态图像的弹出按钮(Cocoa OSX)
-
28-09-2019 - |
题
我正在尝试制作一个弹出按钮,该按钮始终显示+作为其图像,当您单击它时,会弹出一个上下文菜单,允许您决定要添加的对象类型。有没有使用NSPopupButton来做到这一点?我在nspopupbutotn的规范中看到,方法SetImage没有效果,所以看起来这很可能不会使用此类工作。这是正确的吗?
解决方案
是的,可见的外观 NSPopUpButton
你想要的是错的。
你想要的是一个普通的 NSButton
附有菜单。在界面生成器中清除标题,将边框设置为正方形,将位置设置为中心图标-只有版本,将图像设置为 NSAddTemplate
.
然后创建一个 NSPopUpButton
, ,将其设置为"下拉",隐藏,并将其对齐/将其大小设置为NSButton的底部。
最后,连接 performClick:
在 NSButton
到 performClick:
在 NSPopUpButton
.
这不会处理一个点击按住按钮;为此,您必须编写一些代码来使用(非绘图) NSPopUpButtonCell
.
其他提示
为什么不只使用NSPopupButton?使用2个按钮执行一项任务似乎并不正确,而且如上所述,就按住按钮而言,它的行为不正常。
要使弹出按钮按您的喜好工作,请将其设置为下拉类型。不要给弹出按钮本身任何名称或图像。如果弹出按钮没有名称或图像,则第一个菜单项将成为按钮的标题。菜单项可以包含图像,因此不要给第一个菜单项任何标题,只需将其设置为图像,这就是您将在弹出按钮上看到的图像。对于其余菜单项,只需在第一个菜单项之后照常添加即可。请注意,如果您以编程方式更改代码中的菜单项,只需确保将第一个菜单项保持原样,一切都将正常。我在几个应用程序中都做到了这一点。
关键是使用NSPopUpButtonCell's
setUsesItemFromMenu
:。Apple文档包含一个如何使用它的示例。
弹出按钮获取与之关联的菜单中第一个菜单项的图像和标题。因此最好将要在弹出按钮中显示的图像作为第一个菜单项,然后隐藏其可见性。
如果您不清楚,那么请看以下视频一次,它一定会让您理解。
本教程显示如何在Interface Builder中使用NSToolbar的下拉菜单创建工具栏项(NSToolbarItem): 链接