如何将参数传递给以下选择器?将参数传递给上下文菜单的选择器方法
NSMenuItem *item3 = [[NSMenuItem alloc] initWithTitle:title3 action:@selector(uncheckrow:) keyEquivalent:@""];
我想传递该方法的行数。
感谢
编辑
我想通过该行是我摆在首位的RightClicked表的行。但它可以是任何整型变量..
如何将参数传递给以下选择器?将参数传递给上下文菜单的选择器方法
NSMenuItem *item3 = [[NSMenuItem alloc] initWithTitle:title3 action:@selector(uncheckrow:) keyEquivalent:@""];
我想传递该方法的行数。
感谢
编辑
我想通过该行是我摆在首位的RightClicked表的行。但它可以是任何整型变量..
覆盖的menuForEvent:在你的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];
}
可以使用rowToApply:在contextualMenu项的操作方法(uncheckrow :)。
菜单项本身(item3
您的片段)将被发送到方法,这样就可以识别特定选择的菜单项的方式。您还可以设置NSMenuItem的标签属性,例如:[item3 setTag:3]
,然后在你的uncheckrow方法,你可以使用NSInteger row = [sender tag];
编辑:有关更新的问题
如果你想的任意整数发送给此方法,然后有选择,但他们不是特别优雅。 AppKit将始终发送NSMenuItem作为发件人,因此您需要使NSMenuItem可用的整数处于未选中状态。请注意,NSMenuItems可以通过menu
方法访问其父NSMenus。所以如果父母NSMenu本身有一些你可以利用的财产,你可以使用[[sender menu] thatProperty]
。由于您在显示NSMenu以响应右键单击表格的行时,您可以在显示菜单之前设置属性。我建议继承NSMenu来添加你自己的“spawningRowIndex”属性(尽管选择一个更好的名字)。在显示NSMenu设置属性并收到取消清除之前,您可以使用[[sender menu] spawningRowIndex]
。
谢谢!我要发送的行不是所选菜单的行,而是用户右键单击的行显示菜单。对不起,如果我没有指定这一点。 – sharkyenergy 2013-03-20 18:16:57
@Justme好的我已经更新了我的答案,试图帮助编辑的问题。恐怕我不知道一种优雅的方式来获取右键单击表格行的索引,但我可以建议一些不太优雅的方法来完成。 – 2013-03-20 18:37:52
谢谢,但其他答案更优雅..但无论如何谢谢你! upvoted你的答案! – sharkyenergy 2013-03-20 19:05:43
你想要传递哪一行,这个菜单项设置的上下文是什么,即它是用于mainmenu还是上下文菜单? – nkongara 2013-03-20 18:19:57
我更新了第一篇文章。谢谢 – sharkyenergy 2013-03-20 18:24:05