有没有办法控制打开菜单时最初突出显示的NSMenuItem项?

wil*_*984 12 cocoa objective-c nsmenu

我正在研究符号弹出按钮的细节,类似于编辑器窗口顶部的Xcode 3.

我的控制器对象是NSMenu显示时NSPopUpButton显示的对象.我实现了这两种方法,numberOfItemsInMenu:menu:updateItem:atIndex:shouldCancel:在即将显示之前填充菜单.

但是,NSMenuItem每次用户在编辑器中更改选择时,所选内容的标题和图像都必须更改NSTextView,或者对文本进行更改; 就像Xcode的情况一样.

我遇到的问题是当用户点击NSPopUpButton显示时NSMenu,所选的NSMenuItem和应该选择的项目不匹配,因为菜单还没有正确数量的项目.

我想知道是否有一种方法来控制NSMenuItem当用户点击打开菜单时最初突出显示和跟踪哪个.目前,它始终突出显示和跟踪的第一个项目,或者,如果用户先前已选择项目,则突出显示并跟踪该项目.

我尝试尽可能地解释,但这是一个说明我的问题的图像:

http://imgur.com/izGvh

当用户打开菜单时,我希望突出显示的项目与所选项目相同.有任何想法吗?

Mar*_*oGT 0

您是否尝试过这种NSMenuDelegate方法:处理突出显示

\n\n
\xe2\x80\x93 menu:willHighlightItem:\n
Run Code Online (Sandbox Code Playgroud)\n\n

NSMenuDelegate 协议参考

\n\n

您还可以存储NSMenuItem索引存储在某个变量中以跟踪所选项目以供以后使用。

\n

  • 此方法不允许您更改突出显示的项目,因此它不适用于我的特定情况。 (2认同)