如何在NSMenuItem的操作上设置发件人?

Jef*_*ger 11 cocoa nsmenuitem target-action

Apple文档说传递给NSMenuItem的动作的发送者可以设置为一些自定义对象,但我似乎无法弄清楚如何做到这一点.有没有一种方法我在文档中没有看到某个地方?

Rob*_*ger 28

我不确定你所指的是什么文件(链接会有所帮助).

您可以使用将任意对象与菜单项关联的-setRepresentedObject:方法NSMenuItem:

//assume "item" is an NSMenuItem object:

NSString* someObj = @"Some Arbitrary Object";

[item setRepresentedObject:someObj];
[item setAction:@selector(doSomething:)];
Run Code Online (Sandbox Code Playgroud)

然后,当菜单项发送其操作消息时,您可以获取该对象:

- (IBAction)doSomething:(id)sender
{
    NSLog(@"The menu item's object is %@",[sender representedObject]);
}
Run Code Online (Sandbox Code Playgroud)

  • 你不应该使用标题,因为它们可以被本地化等.使用`-representedObject`会更好,因为它设计用于存储任意数据. (5认同)