我有一个带有状态菜单的 Mac OS 应用程序(在 Interface Builder 中制作)。我想在某些事件发生时更改状态菜单项标题。我可以在动作处理程序中很好地做到这一点,因为我有一个对那里的项目的引用(sender
):
- (IBAction)playPauseMusic:(id)sender {
// ...
[sender setTitle:@"New Title"];
}
但是如何在我的应用程序的其他部分做到这一点?我不知道如何menuItem
在以下代码中获得引用:
- (void) someOtherMethod:(int)isPlaying {
menuItem = ...;
if(isPlaying) {
[menuItem setTitle:@"Pause"];
}
}
怎么做才能使上述工作?
更新。这是我附加状态菜单的方法:
// MyAppDelegate.h:
@interface MyApp : NSApplication
@end
@interface MyAppDelegate : NSObject <NSApplicationDelegate>
{
NSMenu *statusMenu;
NSStatusItem *statusItem;
// ...
}
@property (strong) IBOutlet NSMenu *statusMenu;
// ...
@end
// MyAppDelegate.m:
@synthesize statusMenu;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
statusItem = [[NSStatusBar systemStatusBar]
statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:[self statusMenu]];
}