在父菜单中获取NSMenuItem(sender)的索引

时间:2012-04-19 05:21:17

标签: objective-c cocoa nsmenuitem nsmenu sender

我有一个NSMenu应用程序停靠菜单),其中包含几项相同的操作。

如何在容器菜单中找出发件人项目的索引(触发操作的索引)? (我对title并不感兴趣,因为那可能是重复的)

这就是我尝试过的,但它不断返回0(零)。

- (void)myAction:(id)sender
{
    NSMenuItem* mi = (NSMenuItem*)sender;

    int index = [[[mi parentItem] submenu] indexOfItem:mi];

    NSLog(@"Clicked item with index : %d",index);
}

有什么想法吗? (有没有更好的方法来实现同样的事情?)

1 个答案:

答案 0 :(得分:4)

您可以使用菜单项' representedObject存储对应用中某个对象的引用。在您的情况下,您可能会使用菜单项引用的文档:

[aMenuItem setRepresentedObject:yourDocument];

然后您可以像这样访问操作中的对象:

- (void)myAction:(id)sender
{
    NSMenuItem* mi = (NSMenuItem*)sender;
    YourDocument* doc = (YourDocument*)[sender representedObject];
    //do something with doc
}