当按下红色X时,我的窗口会消失,但按照设计,我的状态栏项目会保留在状态栏中。
当您点击状态栏项目时,它会打开一个菜单。其中一个选择是重新打开应用程序。它可以在app控制器中调用一个动作,但是我不知道如何打开我的应用程序窗口备份。我读了那个
[window makeKeyOrderFront:self];
完成此操作但编译器无法识别“窗口”。我是客观c / cocoa的新手,所以我确定我错过了一些明显的东西。
答案 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;
}