【发布时间】:2013-11-30 15:31:15
【问题描述】:
我是 Objective-C 和 Mac 开发的初学者。我已经在这个网站上搜索了我正在寻找的答案,但由于我非常无知,我无法理解应该如何做到这一点。
以下代码实现了 Mac 状态栏中的菜单,靠近屏幕右上角的电池、wifi 等图标。
如果用户断开设备与计算机的连接,则使用一个布尔参数调用方法 sayAdapterIsConnected。根据该参数,菜单项之一(在本例中为 enabledOption)应该被禁用。我的意思是,应该启用或禁用菜单项。
这仅在菜单关闭时有效。如果statusMenu被打开,则不会更新。
我知道有一种方法可以更新打开的statusItem 菜单。 Wifi 状态图标会在菜单打开时更新其网络。
@interface ENHeringAppDelegate : NSObject <NSApplicationDelegate> {
NSStatusItem * statusItem;
}
@property (weak) IBOutlet NSMenu *statusMenu;
@property (weak) IBOutlet NSMenuItem *enabledOption;
@end
@implementation ENHeringAppDelegate
- (void) awakeFromNib {
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:_statusMenu];
[statusItem setTitle:@"TEST"];
[statusItem setHighlightMode:YES];
}
- (void)sayAdapterIsConnected:(bool)connected {
if (connected)
[self.enabledOption setEnabled:true];
else
[self.enabledOption setEnabled:false];
}
@end
【问题讨论】:
-
你说你“已经尝试了这个论坛的许多解决方案,但没有一个对我有用。”请说明您尝试了哪些解决方案以及结果如何,这样我们就不再重复了。
标签: objective-c cocoa