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];
}