1

我有一个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);
}

有任何想法吗?(有没有更好的方法来实现同样的目标?)

4

1 回答 1

4

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

[aMenuItem setRepresentedObject:yourDocument];

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

- (void)myAction:(id)sender
{
    NSMenuItem* mi = (NSMenuItem*)sender;
    YourDocument* doc = (YourDocument*)[sender representedObject];
    //do something with doc
}
于 2012-04-19T08:16:12.250 回答