Objective c 将参数传递到上下文菜单';s选择器方法

Objective c 将参数传递到上下文菜单';s选择器方法,objective-c,methods,parameters,selector,Objective C,Methods,Parameters,Selector,如何将参数传递给以下选择器 NSMenuItem *item3 = [[NSMenuItem alloc] initWithTitle:title3 action:@selector(uncheckrow:) keyEquivalent:@""]; 我想将行数传递给方法 谢谢 编辑 我要传递的行是我首先右键单击的表的行。但它可以是任何整数变量 菜单项本身(item3您的代码片段)将被发送到该方法,因此您可以通过这种方式识别特定的选定菜单项。您还可以设置NSMenuItem的标记属性,例

如何将参数传递给以下选择器

   NSMenuItem *item3 = [[NSMenuItem alloc] initWithTitle:title3 action:@selector(uncheckrow:)  keyEquivalent:@""];
我想将行数传递给方法

谢谢

编辑

我要传递的行是我首先右键单击的表的行。但它可以是任何整数变量

菜单项本身(
item3
您的代码片段)将被发送到该方法,因此您可以通过这种方式识别特定的选定菜单项。您还可以设置NSMenuItem的标记属性,例如:
[item3 setTag:3]
,然后在取消选中的方法中,您可以使用
NSInteger row=[sender tag]

编辑:用于更新的问题


如果您想向这个方法发送任意整数,那么有一些选项,但它们并不特别优雅。AppKit将始终以发送方的身份发送NSMenuItem,因此您需要使整数可用于未选中的NSMenuItem。请注意,NSMenuItems可以通过
菜单
方法访问其父NSMenus。因此,如果父菜单本身有一些可以利用的属性,则可以使用
[[sender menu]thatProperty]
。由于显示NSMenu是为了响应右键单击表的行,因此可以在显示菜单之前设置属性。我建议子类化NSMenu以添加您自己的“spawingrowIndex”属性(尽管选择更好的名称)。在显示NSMenu之前,设置属性,当您收到取消选中的命令时,您可以使用
[[sender menu]spawingrowindex]

覆盖菜单ForEvent:在tableview的子类中,在控制器中设置一些变量,例如“rowToApply”

- (NSMenu*) menuForEvent:(NSEvent*)event
{
    NSPoint point = [self convertPoint:[event locationInWindow] fromView:nil];
    NSInteger row = [self rowAtPoint:point];
    BOOL clickWasOnItem = (row > -1);
        if(clickWasOnItem) {
            controller.rowToApply = [self itemAtRow:row];// Controller can be datasource(or) delegate (or) someObject which can be accessible)
        }
    return [super menuForEvent:event];
}

您可以使用行应用:在上下文菜单项中的操作方法(取消选中:)。

谢谢!我要发送的行不是所选菜单的行,而是用户在第一个位置右键单击以显示菜单的行。抱歉,如果我没有指定此选项。@Justme OK我已更新了我的答案,以尝试帮助编辑问题。恐怕我不知道一种优雅的方法可以将右键单击的表行的索引转换为该方法,但我可以建议一些不那么优雅的方法。谢谢,但另一个答案更优雅。。不过还是要谢谢你!投票支持你的答案!你想传递哪一行,这个菜单项设置的上下文是什么,即它是主菜单还是上下文菜单?我更新了第一篇文章。谢谢