Mac简单例子实现主菜单在多个窗口之间的共用问题

本文提供了一个简单的Mac应用实例,演示如何在多个窗口之间共享主菜单。通过将菜单项链接到First Responder的IBAction方法,实现不同窗口响应同一菜单操作。在切换窗口时,主菜单的'点烤鸭'菜单项会调用当前窗口的对应方法,展示了First Responder的作用。若要禁用特定窗口的菜单功能,可在相应窗口的validateMenuItem:方法中进行控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


【原文地址:Mac简单例子实现主菜单在多个窗口之间的共用问题

【作者:chenghxc

【Demo:源码下载地址


为了更简单的实现主菜单在多个窗口之间的共用问题,特意写了一个超级简单的例子。对于Mac的初学者理解起来会比较容易,大牛的路过勿笑哈。

这个例子中主要有两个窗口,在这两个窗口中都实现了 -(IBAction)getKaoYa:(id)sender 方法。在主菜单中有一个‘点烤鸭’菜单项(为什么叫点烤鸭呢?因为此时我肚子有点饿。),‘点烤鸭’的 selector 不是直接链接到第一个窗口的 getKaoYa: 方法上,而是链接了 First Responder 里的 getKaoYa: 。


 

为什么 First Responder 中会有 getKaoYa: 方法呢?【对于 First Responder 的作用大家可以网上搜索以下,传送门

简单的解释就是只要你的方法的返回类型是IBAction ,例如 -(IBAction)getKaoYa:(id)sender 就会出现在 First Responder 中,而在运行时当触发 First Responder 中的某个方法时,First Responder 会调用当前活跃窗口(也可以叫置顶窗口)的相应方法。

好了,大家可以下载我的demo看一下。打开两个窗口后尝试切换窗口,点击主菜单中的‘点烤鸭’,在后台会输出不一样的信息。

如果你想禁用某个窗口的‘点烤鸭’功能,可以在相应窗口的-(BOOL)validateMenuItem:(NSMenuItem *)menuItem中控制。(demo中会有相应说明)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值