如何在上下文菜单中创建逻辑组。苹果系统

时间:2017-03-01 16:44:38

标签: objective-c macos finder-extension

我想通过分离子菜单中的菜单项来创建逻辑组。

与Mac中的打开子菜单类似。

我怎样才能做到这一点。

NSMenuItem分隔符项创建一个空格,我要求视觉与附加的图像相同。 enter image description here

1 个答案:

答案 0 :(得分:1)

我猜是,您正在搜索子菜单项。通过搜索子菜单在Interface Builder中找到它。

enter image description here

在所需菜单中插入后,您会找到一个名为Item的新条目。只需编辑这些,或者根据需要填写其他菜单项。这会根据您的要求创建一个菜单结构!

enter image description here

  • 编辑*

我为您提供了问题的解决方案。根据Apple Docs Context,菜单位于它们所属的视图中。从viewController`viewDidLoad调用该方法。选择器方法根据需要创建。

*编辑* 将创建的菜单分配给主菜单。我是用viewDidLoad方法完成的。如果你不喜欢在主菜单上,请在主菜单评论后跳过两行。 BTW索引是菜单插入主菜单的位置。

- (void)viewDidLoad {
    [super viewDidLoad];
    [[self view] setMenu:[self contextMenu]];

    NSMenuItem *subMenu = [[NSMenuItem alloc] init];
    subMenu.submenu = [self contextMenu];

    // Add the menu in mainmenu as well
    NSMenu *mainMenu = [[NSApplication sharedApplication] mainMenu];
    [mainMenu insertItem:subMenu atIndex:3];
   }

-(NSMenu *)contextMenu {

    NSMenu *contextMenu = [[NSMenu alloc] initWithTitle:@"Contextmenu"];

    NSMenuItem *subMenuItem = [[NSMenuItem alloc] init];
    [subMenuItem setEnabled:YES];
    [subMenuItem setTarget:self];
    [subMenuItem setEnabled:YES];

    NSMenu *subMenu = [[NSMenu alloc] initWithTitle:@"Submenu"];
    subMenuItem.submenu = subMenu;
    [subMenuItem setTitle:[subMenu title]];

   // Creates the menu entries.
    NSMenuItem *menuItem1 = [[NSMenuItem alloc] initWithTitle:@"otherMenu" action:@selector(subMenuAction:) keyEquivalent:@""];
    NSMenuItem *menuItem2 = [[NSMenuItem alloc] initWithTitle:@"anotherMenu" action:@selector(subMenuAction:) keyEquivalent:@""];

 // Creates the separator.
   NSMenuItem *separator = [NSMenuItem separatorItem];

  [subMenu addItem:menuItem1];
  [subMenu addItem:separator];
  [subMenu addItem:menuItem2];


  [contextMenu addItem:subMenuItem];

  return contextMenu;

 }

- (void)subMenuAction:(id)sender {

}

我测试了它,它的工作原理!这是屏幕截图。enter image description here

希望它有所帮助。如果是,请使用绿色回答菜单: - )

相关问题