Objective c 如何管理新的NSMenuItem?
我正在按代码添加菜单项 我正在使用“选择器”,但我的问题是因为我有一个“可变”菜单,我不知道它将有多少行,所以我需要管理每个行,但不知道有多少行 也许通过代码我可以更好地解释这个问题 我有一个循环如下(或多或少)Objective c 如何管理新的NSMenuItem?,objective-c,xcode,macos,cocoa,Objective C,Xcode,Macos,Cocoa,我正在按代码添加菜单项 我正在使用“选择器”,但我的问题是因为我有一个“可变”菜单,我不知道它将有多少行,所以我需要管理每个行,但不知道有多少行 也许通过代码我可以更好地解释这个问题 我有一个循环如下(或多或少) for(punterolineas=punterolineas;punterolineas有几种方法: 设置每个菜单项的标记。在操作方法(-menuitem:)中,检查发送者的标记并决定要执行的操作。在您的情况下,您可以使用punterolineas,假设lineas数组在菜单项的生
for(punterolineas=punterolineas;punterolineas有几种方法:
- 设置每个菜单项的
标记
。在操作方法(-menuitem:
)中,检查发送者的标记并决定要执行的操作。在您的情况下,您可以使用punterolineas
,假设lineas
数组在菜单项的生命周期内保持不变
- 设置每个菜单项的
representedObject
。在操作方法中,获取sender
的representedObject
,并使用它来控制您的操作。在您的情况下,您可以使用dic
作为representedObject
,如果它有控制菜单应该做什么的信息。/li>
- 使用适当的模型对象(自定义类的实例)而不是
NSDictionary
来表示行。让菜单项以模型对象为目标,而不是self
。使用该模型类的方法,而不是包含上述代码的类的方法作为操作方法。同样,这要求线条对象的寿命至少与菜单项的寿命相同
您所说的“管理IBaction”是什么意思?您可以使用-setAction:
方法设置菜单项的操作属性。是的,抱歉,它需要更多信息。谢谢!最后我使用的是[发件人标题],这对我的目标来说不是最好的,但它可能是工作。非常感谢你的提示!不客气。使用标题几乎从来都不是正确的方法。
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];
}