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

Posted

技术标签:

【中文标题】如何在 NSMenuItem 的操作上设置发件人?【英文标题】:How do I set the sender on a NSMenuItem's action? 【发布时间】:2011-02-18 22:31:12 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我不确定您指的是哪份文档(链接会有所帮助)。

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

//assume "item" is an NSMenuItem object:

NSString* someObj = @"Some Arbitrary Object";

[item setRepresentedObject:someObj];
[item setAction:@selector(doSomething:)];

那么当菜单项发送它的动作消息时,你就可以得到对象:

- (IBAction)doSomething:(id)sender

    NSLog(@"The menu item's object is %@",[sender representedObject]);

【讨论】:

我一时想不起是什么文档,但我最终还是弄明白了。 愚蠢的问题:既然我们可以使用 NSMenuItem 标题,为什么还要使用代表对象? 您不应该使用标题,因为它们可以本地化等。最好使用-representedObject,因为它旨在存储任意数据。

以上是关于如何在 NSMenuItem 的操作上设置发件人?的主要内容,如果未能解决你的问题,请参考以下文章

在显示主机菜单时更新 NSMenuItem

NSMenuItem KeyEquivalent " "(空格) 错误

具有自定义视图的 NSMenuItem 在滚动时消失

如何删除自定义视图上方的 NSMenuItem 间隙

如何在 NSMenuItem 内绘制内联样式标签(或按钮)

如何设置 mailx 命令的发件人电子邮件地址?