我是新来的Obj-C/可可编程,我有一个问题,试图以动态的菜单项添加一个NSMenu实例和有项目的行动,选择已经落后,插入。

我可以,加入动态的菜单项的现,但行动选择不会触发项目时,点击。

第一线的下线的代码,我在使用增加的单项目。你可以置我设置的行动:(SEL)aSelector的"openEchowavesURL"的功能。

这一功能是相同的控制器类文件,我已经包括的功能定义如下。

我只是打电话的错误选择的语法或通融一下?或是什么诀窍,以获得单项目来称呼一个选择当击?


[statusMenu insertItemWithTitle:[NSString stringWithFormat:@"%d - %@", convo.newMessagesCount, convo.ewName] action:@selector(openEchowavesURL:) keyEquivalent:@"" atIndex:0];

- (void)openEchowavesURL:(id)sender {
    // function details here
}
有帮助吗?

解决方案

如果你想的行动将触发对你的对象,就必须指定一目标为新的 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

如果你不做,那么 NSResponder 链将走到一个对象响应的选择。

其他提示

操作需要一个目标,否则他们会发送到零,然后新的规则。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top