2011-11-16 31 views
5

好的我有一个状态菜单应用程序,其中有一个“隐藏”菜单项。OSX:如何“取消隐藏”状态栏项目?

点击“隐藏”呼吁:

[[NSStatusBar systemStatusBar] removeStatusItem:statusItem] 

当然这消除,即使它仍在运行,我从状态栏的应用程序。

当用户在应用程序文件夹中“打开”我的应用程序时,我希望将我的应用程序重新添加到系统状态栏中。问题是我无法在“ApplicationDidFinishLaunching”中插入这段代码,因为应用程序已经打开。所以我该怎么做?

+0

请问这个帖子求助:http://stackoverflow.com/questions/843379/how-do-you-toggle-the-status-item-in -O-menubar-on-off-off-using-a-checkbox – petert

回答

2

您可以使用-applicationDidBecomeActive:,但您需要区分应用程序隐藏后变为活动状态的情况,并在用户切换到其他应用程序而不隐藏自己的应用程序后变为活动状态。

+0

谢谢。有用 :) – hollow7

0

你不能以编程方式初始化状态项吗?这似乎为我工作,即使外面的applicationDidFinishLaunching的:

// Install status item into the menu bar 
myStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]; 
NSImage *statusImage = [NSImage imageNamed:@"Status.png"]; 
[myStatusItem setImage:statusImage]; 
NSImage *altStatusImage = [NSImage imageNamed:@"StatusHighlighted"]; 
[myStatusItem setAlternateImage:altStatusImage]; 
[myStatusItem setHighlightMode:YES]; 
[myStatusItem setMenu:self.myStatusMenu]; 
[self.myStatusMenuItem setTitle:@"Show"];