NSMenu具有2个标准+可变数量的NSMenuItems

时间:2012-03-24 20:36:42

标签: objective-c cocoa nsmenuitem nsmenu

我有一个NSMenu,其中包含2个默认项目(位于其顶部)。

然后将填充菜单的其余部分。

我想要的是“保存”初始菜单的状态(包含两个项目),并将项目添加到该(原始)菜单;而不只是继续添加和添加。

因此,如果我必须添加其他项目,则必须在初始菜单中添加这些项目。

  

示例:

     
      
  • 菜单开头:A B |
  •   
  • 用户执行此操作后的菜单:A B | C D E
  •   用户执行此操作后的
  • 菜单:A B | G H I J K
  •   
  •   

我应该怎么做? (我尝试“保存”初始菜单,然后将其“复制”到当前菜单,以便我可以在其上添加项目,但它不起作用......: - S)


[DOC_UI setCurrentMenu:[[DOC_UI originalMenu] copy]];

// I'm adding the items here

for (NSMenuItem* mi in [[DOC_UI currentMenu] itemArray])
      NSLog(@"orig :: mi : %@",[mi title]);

/* The weird thing is that the items ARE NSlogged, but the change is NOT reflected. */
/* (When I was just adding to the existing items, the items did show up...) */

1 个答案:

答案 0 :(得分:1)

如果您正在谈论菜单的菜单项,当您想要返回原始菜单时,可以在循环中删除除前2项之外的所有项目。如果您有一个名为userMenu的2个默认项目的菜单,请执行以下操作:

-(void)removeMenuItems {
for (NSInteger i=self.userMenu.itemArray.count - 1; i>1; i--) {
    [self.userMenu removeItemAtIndex:i];
}

}