从状态栏中的菜单选择重新打开我的应用程序窗口

时间:2011-12-29 01:36:13

标签: objective-c macos statusbar

当按下红色X时,我的窗口会消失,但按照设计,我的状态栏项目会保留在状态栏中。

当您点击状态栏项目时,它会打开一个菜单。其中一个选择是重新打开应用程序。它可以在app控制器中调用一个动作,但是我不知道如何打开我的应用程序窗口备份。我读了那个

[window makeKeyOrderFront:self];

完成此操作但编译器无法识别“窗口”。我是客观c / cocoa的新手,所以我确定我错过了一些明显的东西。

2 个答案:

答案 0 :(得分:1)

此处window是您用于存储应用程序中NSWindow*对象的变量 - 它假设您仍然在其中一个类中保留它(通常在应用程序委托中 - 默认Xcode app委托模板甚至为window创建了一个属性。但是,所有这些都取决于应用程序的类型 - 如果您的应用程序是基于文档的(您可以调用openUntitledDocumentAndDisplay:error:来创建新文档),这应该是全自动的。如果不是,则完全取决于您的代码来管理窗口 - 通常在应用程序委托中。

答案 1 :(得分:0)

我最近解决了这个问题,这对我有用。所有这三件事都在AppDelegate中处理:

//重新打开应用程序菜单选择的响应

- (IBAction)showMainWindow:(id)sender
{
    [self applicationShouldHandleReopen:nil hasVisibleWindows:YES];
    [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}

//如果你希望MainWindow在用户关闭后重新出现,需要这个

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [_window setReleasedWhenClosed:NO]; 
}

//如果你希望MainWindow在用户关闭后重新出现,需要这个

- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
    [_window setIsVisible:YES];
    return YES;
}