5

我想创建一个 NSMenu,其选项类似于您在 Windows 资源管理器中找到的“发送到”选项,其中将列出您可以将文件发送到的附加设备。

从我的研究来看,似乎不可能定义一个将参数发送给函数的选择器,所以这不是拥有@selector(@"sendToVolume:1"). 那么,当项目数量未知时,我还能如何让菜单根据单击的项目执行不同的任务呢?

4

2 回答 2

16

NSMenuItem 有一个representedObject属性,可用于存储您想要的任何内容,例如对该项目表示的目标的引用。

调用选择器时,您可以取回所代表的对象:

-(IBAction)sendTo:(id)sender {
    id destination = [sender representedObject];
}
于 2009-09-08T09:18:13.603 回答
1

但是你可以使用带参数的选择器!NSObject具有如下定义的三个方法:

-performSelector:
-performSelector:withObject:
-performSelector:withObject:withObject:

现在,第一个就像 have 一样@selector(someMethod:),但最后两个用于向选择器发送参数。例如:

-(void)sendToVolume:(NSNumber)nr { 
//do stuff
}

那么你可以像这样使用它:

[appController performSelector:@selector(sendToVolume:) 
               withObject:[NSNumber numberWithInt:1]];
于 2009-09-14T19:26:21.270 回答