我有一个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);
}
有什么想法吗? (有没有更好的方法来实现同样的事情?)
答案 0 :(得分:4)
您可以使用菜单项' representedObject
存储对应用中某个对象的引用。在您的情况下,您可能会使用菜单项引用的文档:
[aMenuItem setRepresentedObject:yourDocument];
然后您可以像这样访问操作中的对象:
- (void)myAction:(id)sender
{
NSMenuItem* mi = (NSMenuItem*)sender;
YourDocument* doc = (YourDocument*)[sender representedObject];
//do something with doc
}