【问题标题】:Creating NSMenu with NSMenuItems in it, programmatically?以编程方式创建带有 NSMenuItems 的 NSMenu?
【发布时间】:2011-10-06 02:45:18
【问题描述】:

首先,我想指出这个问题可能已经被问过了,我只是无法从他们那里找到任何答案。

所以,我正在以编程方式尝试在主栏上创建一个 NSMenu 和 NSMenuItem,所以是的。 NSMenu 将是 File,然后它将包含 3x NSMenuItem,新建、打开和保存。

但没有任何效果,这是我目前拥有的:

NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
NSMenuItem *newMenu = [[NSMenuItem alloc] initWithTitle:@"New" action:NULL keyEquivalent:@""];
NSMenuItem *openMenu = [[NSMenuItem alloc] initWithTitle:@"Open" action:NULL keyEquivalent:@""];
NSMenuItem *saveMenu = [[NSMenuItem alloc] initWithTitle:@"Save" action:NULL keyEquivalent:@""];
[newMenu setMenu:fileMenu];
[openMenu setMenu:fileMenu];
[saveMenu setMenu:fileMenu];

但是什么都没有发生,我很确定我必须告诉应用程序它应该使用 fileMenu,但是我该怎么做,如果这不是问题,那是什么?我对这些东西很陌生,但对学习很感兴趣,所以有任何提示总比没有好!

【问题讨论】:

    标签: cocoa menu nsmenuitem nsmenu


    【解决方案1】:

    设置菜单时,您设置的是为该项目显示的菜单,而不是其父菜单。

    要将这三个项目添加到您的菜单中,请使用:

    [fileMenu addItem: newMenu];
    [fileMenu addItem: openMenu];
    [fileMenu addItem: saveMenu];
    

    然后将菜单添加到菜单栏:

    NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle: @"File"];
    [fileMenuItem setSubmenu: fileMenu]; // was setMenu:
    [[NSApp mainMenu] addItem: fileMenuItem];
    [fileMenuItem release];
    

    每个菜单都有多个菜单项;一个菜单项可以负责一个子菜单;所有这些菜单都通过[NSApp mainMenu] 锚定到 UI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多