osx Application代码实现NSMenu

1在info.plist文件里设置如下:

<key>AppMenu</key>
<array>
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>items</key>
                <array/>
                <key>name</key>
                <string>About Application</string>
                <key>selector</key>
                <string>orderFrontStandardAboutPanel:</string>
                <key>target</key>
                <string>NSApp</string>
            </dict>
            <dict>
                <key>items</key>
                <array/>
                <key>name</key>
                <string>Preference...</string>
                <key>selector</key>
                <string>orderFrontStandardAboutPanel:</string>
                <key>target</key>
                <string>NSApp</string>
            </dict>
            <dict>
                <key>items</key>
                <array/>
                <key>name</key>
                <string>quite</string>
                <key>selector</key>
                <string>terminate:</string>
                <key>target</key>
                <string>NSApp</string>
            </dict>
        </array>
        <key>name</key>
        <string>Application</string>
        <key>selector</key>
        <string></string>
        <key>target</key>
        <string></string>
    </dict>
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>items</key>
                <array>
                    <dict>
                        <key>items</key>
                        <array>
                            <dict>
                                <key>items</key>
                                <array/>
                                <key>name</key>
                                <string>MiniZoome</string>
                                <key>selector</key>
                                <string>orderFrontStandardAboutPanel:</string>
                                <key>target</key>
                                <string>NSApp</string>
                            </dict>
                        </array>
                        <key>name</key>
                        <string>MiniZoome</string>
                        <key>selector</key>
                        <string>orderFrontStandardAboutPanel:</string>
                        <key>target</key>
                        <string>NSApp</string>
                    </dict>
                </array>
                <key>name</key>
                <string>MiniZoome</string>
                <key>selector</key>
                <string>orderFrontStandardAboutPanel:</string>
                <key>target</key>
                <string>NSApp</string>
            </dict>
            <dict>
                <key>items</key>
                <array/>
                <key>name</key>
                <string>Zoom</string>
                <key>selector</key>
                <string>orderFrontStandardAboutPanel:</string>
                <key>target</key>
                <string>NSApp</string>
            </dict>
            <dict>
                <key>items</key>
                <array/>
                <key>name</key>
                <string>Help</string>
                <key>selector</key>
                <string>terminate:</string>
                <key>target</key>
                <string>NSApp</string>
            </dict>
        </array>
        <key>name</key>
        <string>Window</string>
        <key>selector</key>
        <string></string>
        <key>target</key>
        <string></string>
    </dict>
</array>

2代码实现如下:

#pragma mark 根据info.plist AppMenu设置,创建菜单
-(void)defaultMenu{

    NSMenu *mainMenu = [[NSMenu alloc] init];

    for (NSDictionary *item in [[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppMenu"]) {
        NSMenuItem *item1 = [[NSMenuItem alloc] initWithTitle:[item objectForKey:@"name"] action:nil keyEquivalent:@""];

        [mainMenu addItem:item1];
        [mainMenu setSubmenu:[self createMenu:[item objectForKey:@"name"] withItem:[item objectForKey:@"items"]] forItem:item1];
    }

    NSApp.mainMenu = mainMenu;
    return;

}
-(NSMenu *)createMenu:(NSString *)name withItem:(NSArray *)itemDict{
    NSMenu *menu = [[NSMenu alloc] initWithTitle:name];
    for (NSDictionary *dict in itemDict) {
        NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[dict objectForKey:@"name"] action:nil keyEquivalent:@""];

        item.target = NSClassFromString([dict objectForKey:@"target"]);

        item.action = NSSelectorFromString([dict objectForKey:@"selector"]);

        [menu addItem:item];
        //分割线
        [menu addItem:[NSMenuItem separatorItem]];
        if([[dict objectForKey:@"items"] count] >0){
            [menu setSubmenu:[self createMenu:[dict objectForKey:@"name"] withItem:[dict objectForKey:@"items"]] forItem:item];
        }
    }

    return menu;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值