MacOS 开发
来源:互联网 发布:唐氏筛查看男女软件 编辑:程序博客网 时间:2024/06/05 14:29
- 添加顶部mainMenu目录
- 简单常用的一级目录
- 添加二三级目录
- 添加 Dock 菜单
- 状态栏NSStatusItem添加菜单
- 给一个NSView添加右击菜单
- 小结
- 参考资料
添加顶部(mainMenu)目录
简单常用的一级目录
- (void)addMenu{ //获取主目录 NSMenu *mainMenu = [NSApp mainMenu]; NSLog(@"%@ - %@",mainMenu,[mainMenu itemArray]); //添加一级目录 NSMenuItem *oneItem = [[NSMenuItem alloc] init]; [oneItem setTitle:@"Load_TEXT"]; [mainMenu addItem:oneItem]; //添加二级目录项 NSMenu *subMenu = [[NSMenu alloc] initWithTitle:@"Load_TEXT"]; [subMenu addItemWithTitle:@"Load1"action:@selector(load1) keyEquivalent:@"E"]; [subMenu addItemWithTitle:@"Load2"action:@selector(load2) keyEquivalent:@"R"]; [oneItem setSubmenu:subMenu]; //更新 [NSApp setMainMenu:mainMenu];}
添加二三级目录
- (void)addMenu{ NSImageView *imgView = [[NSImageView alloc]initWithFrame:NSMakeRect(100, 100, 100, 100)]; [self.window.contentView addSubview:imgView]; imgView.image = [NSImage imageNamed:@"apple"]; //1.获取主目录 NSMenu *mainMenu = [NSApp mainMenu]; NSLog(@"%@ - %@",mainMenu,[mainMenu itemArray]); //2.添加一级目录 NSMenuItem *oneItem = [[NSMenuItem alloc] initWithTitle:@"一级目录" action:nil keyEquivalent:@"O"]; [oneItem setTitle:@"Load_TEXT"]; //设置文字无效 [mainMenu insertItem:oneItem atIndex:2]; //3.添加二级目录项 NSMenu *subMenu = [[NSMenu alloc] initWithTitle:@"一级目录"]; //这里设置一级目录的名字有效 [oneItem setSubmenu:subMenu]; [subMenu addItemWithTitle:@"Load1"action:@selector(load1) keyEquivalent:@"E"]; [subMenu addItemWithTitle:@"Load2"action:@selector(load2) keyEquivalent:@"T"]; NSMenuItem *item3 = [[NSMenuItem alloc]initWithTitle:@"Load3" action:@selector(load2) keyEquivalent:@"T"]; [subMenu addItem:item3]; //4、添加三级目录 NSMenu *subMenu3 = [[NSMenu alloc] initWithTitle:@"三级目录"]; [item3 setSubmenu:subMenu3]; //5、给三级目录添加子目录 NSMenuItem *item30 = [[NSMenuItem alloc]initWithTitle:@"-30" action:@selector(load2) keyEquivalent:@"T"]; NSMenuItem *item31 = [[NSMenuItem alloc]initWithTitle:@"-31" action:@selector(load2) keyEquivalent:@"T"]; [subMenu3 addItem:item30]; [subMenu3 addItem:item31]; //更新 [NSApp setMainMenu:mainMenu];}
效果如图:
添加 Dock 菜单
1、在 delegate.m 中添加属性: @property (nonatomic,strong) NSMenu *dockMenu;
2、初始化 menu
2.1 添加简单的一级 menu
- (void)addDockMenu{ self.dockMenu = [[NSMenu alloc] initWithTitle:@"DockMenu"]; [self.dockMenu setAutoenablesItems:NO]; NSMenuItem *oneItem = [[NSMenuItem alloc] initWithTitle:@"新的Dock目录" action:@selector(load1) keyEquivalent:@"P"]; [oneItem setTarget: self]; [self.dockMenu addItem:oneItem];}
效果如图:
2.2 添加二级目录,三级的话,可以参考上一部分的代码
- (void)addDockMenu{ self.dockMenu = [[NSMenu alloc] initWithTitle:@"DockMenu"]; [self.dockMenu setAutoenablesItems:NO]; NSMenuItem *oneItem = [[NSMenuItem alloc] initWithTitle:@"新的Dock目录" action:@selector(load1) keyEquivalent:@"P"]; [oneItem setTarget: self]; [self.dockMenu addItem:oneItem]; NSMenu *subMenu = [[NSMenu alloc] initWithTitle:@"一级目录"]; //这里设置一级目录的名字有效 [oneItem setSubmenu:subMenu]; [subMenu addItemWithTitle:@"Load1"action:@selector(load1) keyEquivalent:@"E"];}
3、在系统代理方法中返回该目录
- (NSMenu *)applicationDockMenu:(NSApplication *)sender{ return self.dockMenu;}
状态栏(NSStatusItem)添加菜单
NSMenu *subMenu = [[NSMenu alloc] initWithTitle:@"Load_TEXT"]; [subMenu addItemWithTitle:@"Load1"action:@selector(load1) keyEquivalent:@"E"]; [subMenu addItemWithTitle:@"Load2"action:@selector(load2) keyEquivalent:@"R"]; statusItem.menu = subMenu;
给一个NSView添加右击菜单
- 这里的快捷键可能无法直接使用。邮件点击该 View,再使用快捷键有效。
- 一个目录可以添加给多个控件。
- (void)addViewMenu{ NSMenu *newMenu = [[NSMenu alloc] initWithTitle:@"View 的目录"]; NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:@"View 的item" action:@selector(load1) keyEquivalent:@"E"]; [newItem setEnabled:YES]; [newItem setTarget:self]; [newMenu addItem:newItem]; [self.indicater0 setMenu:newMenu]; [self.indicater1 setMenu:newMenu];}
小结
- 一级目录 和 二级目录 都属于 NSMenu 类。
- 一级目录和二级目录的内容属于
NSMenuItem
类。 - 一个一级目录下,只能有一个二级目录,只能用 setSubmenu 设置一级下的二级目录;
- 二级目录下面可以有多个 item,可以用
addItemWithTitle
和insertItemWithTitle
来添加。 - keyEquivalent 是配置的快捷键,如果配置 E,则 command + shif + E 可以调用这个方法。 E 区分大小写,小写无效。
- insertItem 的时候,需要注意 index 的位置。
参考资料:
http://blog.csdn.net/zhjwwdz/article/details/19980131
Tr-使用CCMenu和CCMenuItem添加菜单、右击菜单、Dock菜单 :
http://tr4work.blog.163.com/blog/static/13714931420117511910513/
阅读全文
0 0
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- centos 安装 nginx
- 平衡二叉树的构造
- MyISAM与InnoDb的区别
- 关于margin的数值是百分比,参照对象
- YII入门 (4) -- 自定义Gii生成代码模板
- MacOS 开发
- 《Python语言及其应用》读书笔记(2)之第3章Python容器:列表、元组、字典与集合(关键词:列表/元组/字典/集合)
- 数组排序的简单方法(转)
- 怎样使用putty连接Linux虚拟机
- DateTime的基本使用
- bzoj3585: mex
- uva 11400 Lighting System Design(dp~)
- Ducci Sequence UVA
- bzoj3450Tyvj1952 Easy 期望DP