我正在按代码添加menuItems。
我正在使用“选择器”,但我的问题是因为我有一个“可变”菜单,我不知道它会有多少行,所以我需要管理每一行,但不知道有多少行。
也许使用代码我可以更好地解释问题。
我有一个循环如下(或多或少)
for (punterolineas=punterolineas; punterolineas <= intNumlineas; punterolineas++)
{
NSDictionary *dic = [lineas objectAtIndex:punterolineas];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[dic objectForKey:@"txtMostrado"]action:@selector(menuitem:) keyEquivalent:@""];//Where menuitem is to manage the item, but I need to identify which one it is.
[item setTarget:self];
[statusMenu addItem:item];
}
我认为答案可能是“menuitem”IBaction的“发件人”,但我该如何管理呢?
提前致谢
答案 0 :(得分:0)
有几种方法:
设置每个菜单项的tag
。在操作方法(-menuitem:
)中,检查sender
标记并确定要执行的操作。在您的情况下,您可以使用punterolineas
,假设lineas
数组在菜单项的生命周期内保持不变。
设置每个菜单项的representedObject
。在操作方法中,获取representedObject
的{{1}}并使用它来控制您的操作。在您的情况下,如果sender
具有控制菜单应该执行的操作的信息,则可以使用dic
作为representedObject
。
使用正确的模型对象 - 自定义类的实例 - 而不是NSDictionary
来表示线条。让菜单项定位模型对象而不是self
。使用该模型类的方法而不是包含上述代码的类的方法作为操作方法。同样,这要求线对象至少与菜单项一样长。