使用动作选择器预设将项目添加到NSMenu

cpj*_*eur 1 cocoa objective-c nsmenu nsmenuitem

我是Obj-C/Cocoa编程的新手,我在尝试动态地将菜单项添加到NSMenu实例并在插入时已经设置了项操作选择器时遇到了问题.

我可以,添加动态菜单项,但通过菜单单击项目时,动作选择器不会触发.

下面的第一行是我用来添加菜单项的代码行.您可以设置我将动作:(SEL)aSelector设置为"openEchowavesURL"功能.

这个函数在同一个控制器类文件中,我已经包含了下面的函数定义.

我只是调用错误的选择器语法或某些东西?或者单击时让菜单项调用选择器的技巧是什么?


[statusMenu insertItemWithTitle:[NSString stringWithFormat:@"%d - %@", convo.newMessagesCount, convo.ewName] action:@selector(openEchowavesURL:) keyEquivalent:@"" atIndex:0];
Run Code Online (Sandbox Code Playgroud)
- (void)openEchowavesURL:(id)sender {
    // function details here
}
Run Code Online (Sandbox Code Playgroud)

Lau*_*ble 11

如果希望针对对象触发操作,则必须为新NSMenuItem指定目标:

NSMenuItem *item = [statusMenu insertItemWithTitle:[NSString stringWithFormat:@"%d - %@", convo.newMessagesCount, convo.ewName] action:@selector(openEchowavesURL:) keyEquivalent:@"" atIndex:0];
[item setTarget:self]; // or whatever target you want
Run Code Online (Sandbox Code Playgroud)

如果不这样做,则NSResponder链将被移动,直到对象响应选择器.