【问题标题】:NSMenu with 2 standard + variable number of NSMenuItems具有 2 个标准 + 可变数量的 NSMenuItems 的 NSMenu
【发布时间】:2012-03-24 20:36:42
【问题描述】:

我有一个 NSMenu 有 2 个默认项(在它的顶部)。

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

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

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

示例:

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

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


[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...) */

【问题讨论】:

  • 您想要做的事情有点令人困惑!。 (或者我很厚)你能详细说明一下,什么是 setCurrentMenu:??。您是在谈论子菜单或菜单项,如文件、编辑、查看

标签: objective-c cocoa nsmenuitem nsmenu


【解决方案1】:

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

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

}

【讨论】:

  • 我已经想到了那个(非常明显的)解决方案......是的,它已经修复了!总之非常感谢! ;-)
猜你喜欢
  • 2012-11-07
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
相关资源
最近更新 更多