逐步熟悉MacApp开发(V)的菜单栏和弹出菜单
APP开发
浏览:653 次

概述
本文分为几个阶段,每个阶段完成后都可以看到阶段性成果。
阶段1:显示小菜单栏图标。
第二阶段:隐藏程序窗口和启动栏图标。(无数字)
阶段3:单击小图标MenuBar打开菜单。
阶段4:单击小图标MenuBar打开一个小窗口。
第五阶段:点击鼠标,通过事件监控“智能”关闭小窗口。
第一阶段
1.创建项目,向项目添加图标,并设置图标资源。
此处为图标
图像.png
图像.png
2.在AppDelegate H中,添加NSStatusItem类型的指针变量,对其进行初始化,并定义getDiamond函数。
//应用委托.m
#导入“AppDelegate.h”
@界面AppDelegate()
@属性NSStatusItem*statusItem;
-(void)getDiamond:(NSStatusBarButton*)发件人;
@结束
@实现AppDelegate
-(void)applicationDidFinishLaunching:(NSNotification*)a通知{
//在此处插入代码以初始化App
//初始化_状态项
_statusItem=[[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength];
//设置_状态信息项按钮
NSStatusBarButton*按钮=_ statusItem.button;
if(按钮){
按钮image=[NSImage imageNamed:@“zuan”];

按钮action=@选择器(getDiamond:);
}
}
-(void)getDiamond:(NSStatusBarButton*)发件人{
NSLog(@“你得到了很多钻石!”);
}
-(无效)App将终止:(NSNotification*)通知{
//在此处插入代码以拆除App
}
@结束
3.运行Command+R,效果如下。
图像.png
第二阶段
1.打开序列图像板,选择窗口,然后取消选中[是初始控制器]以删除窗口。
图像.png
2.打开项目设置,单击[信息],然后添加“App是代理(UIElement)”选项,其值为YES。
图像.png
3.第二阶段完成!
第三阶段
1.注释掉AppDelegate中applicationDidFinishLaunching函数中的以下语句。米
//按钮。action=@选择器(getDiamond:);
2.将以下语句添加到applicationDidFinishLaunching函数中。
NSMenu*菜单;
菜单=[[NSMenu alloc]init];
[menu addItem:[[NSMenuItem alloc]initWithTitle:@“Get Diamond”action:@selector(getDiamond:)keyEquivalent:@“g”]];
[菜单添加项:[NSMenuItem分隔符项]];
[menu addItem:[[NSMenuItem alloc]initWithTitle:@“Quit”action:@selector(terminate:)keyEquivalent:@“q”]];
_statusItem。menu=菜单;

3.修改后的AppDelegate完整版本代码。m如下。
#导入“AppDelegate.h”
@界面AppDelegate()
@属性NSStatusItem*statusItem;
-(void)getDiamond:(NSStatusBarButton*)发件人;
@结束
@实现AppDelegate
-(void)applicationDidFinishLaunching:(NSNotification*)a通知{
//在此处插入代码以初始化App
//初始化_状态项
_statusItem=[[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength];
//设置_状态信息项按钮
NSStatusBarButton*按钮=_ statusItem.button;
if(按钮){
按钮image=[NSImage imageNamed:@“zuan”];
//按钮。action=@选择器(getDiamond:);
}
NSMenu*菜单;
菜单=[[NSMenu alloc]init];
[menu addItem:[[NSMenuItem alloc]initWithTitle:@“Get Diamond”action:@selector(getDiamond:)keyEquivalent:@“g”]];
[菜单添加项:[NSMenuItem分隔符项]];
[menu addItem:[[NSMenuItem alloc]initWithTitle:@“Quit”action:@selector(terminate:)keyEquivalent:@“q”]];
_statusItem。menu=菜单;
}
-(void)getDiamond:(NSStatusBarButton*)发件人{
NSLog(@“你得到了很多钻石!”);
}
-(无效)App将终止:(NSNotification*)通知