逐步熟悉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*)通知