Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何从子菜单中获取选定的NSMenuItem?_Macos_Cocoa_Nsmenu_Nsmenuitem_Nspopupbuttoncell - Fatal编程技术网

Macos 如何从子菜单中获取选定的NSMenuItem?

Macos 如何从子菜单中获取选定的NSMenuItem?,macos,cocoa,nsmenu,nsmenuitem,nspopupbuttoncell,Macos,Cocoa,Nsmenu,Nsmenuitem,Nspopupbuttoncell,我有一个API,允许用户创建带有子菜单的弹出菜单,当用户单击属于子菜单的选项时,我在检测所选项目时遇到问题 因此,弹出菜单的显示和“构造”是正确的,工作正常。从NSMenu开始,我添加了一些NSMenuItems,然后对于某些NSMenuItems,我添加了一个新的NSMenu,其中包含了一些NSMenuItems 当我单击属于子菜单的项目时,问题就开始了,我得到的selectedItem总是为零。它在主菜单上运行良好。以下是我显示菜单的方式: NSRect frame = NSMakeRect

我有一个API,允许用户创建带有子菜单的弹出菜单,当用户单击属于子菜单的选项时,我在检测所选项目时遇到问题

因此,弹出菜单的显示和“构造”是正确的,工作正常。从NSMenu开始,我添加了一些NSMenuItems,然后对于某些NSMenuItems,我添加了一个新的NSMenu,其中包含了一些NSMenuItems

当我单击属于子菜单的项目时,问题就开始了,我得到的selectedItem总是为零。它在主菜单上运行良好。以下是我显示菜单的方式:

NSRect frame = NSMakeRect(mp.origin.x + 10, mp.origin.y + 10, 1, 1);

NSPopUpButtonCell *cell = [[NSPopUpButtonCell alloc] initTextCell: @"" pullsDown: NO];
[cell setAutoenablesItems: NO];
[cell setAltersStateOfSelectedItem: NO];
[cell setMenu: mainMenu];
[cell selectItem: Nil];
[cell performClickWithFrame: frame inView: [window initialFirstResponder]];

NSMenuItem *xpto = [cell selectedItem];

单元格通常在控件中使用。为什么不使用
nspoupbutton
?nspoupbutton不允许使用performClickWithFrame,这是菜单等待用户输入的方式。此外,我得到的不是简单的菜单,而是一个下拉框。我还从邮件列表上看到,我想要的这种特殊用法是不可能的。因此,我接下来要尝试的是利用NSMenuItem的“onItemClick:”事件来检测单击的内容。如果您只需要菜单,请创建一个菜单并调用NSMenu的一个
弹出…
方法。单元格通常在控件中使用。为什么不使用
nspoupbutton
?nspoupbutton不允许使用performClickWithFrame,这是菜单等待用户输入的方式。此外,我得到的不是简单的菜单,而是一个下拉框。我还从邮件列表上看到,我想要的这种特殊用法是不可能的。因此,我下一步要尝试的是利用NSMenuItem的“onItemClick:”事件来检测单击的内容。如果您只需要菜单,请创建一个菜单并调用NSMenu的一个
弹出…
方法。