我正在尝试添加一个菜单项来显示主窗口。当窗口未被最小化或关闭时(黄色 - 和红色x按钮)启用它,但是当它具有时,菜单项显示为灰色。那当然是无用而愚蠢的。 :)
另一个菜单项,文件/页面设置...不会以相同的方式变灰(在最小化/关闭时)。我发现此菜单项与我创建的菜单项之间没有IB差异,除了标题。两者都连接到First Responder选择器(runPageLayout:用于页面设置,showWindow:用于我的),两者都有键盘快捷键,并且都启用了。
同样,除标题外,父菜单项是相同的。
当用户按下红色x或黄色按钮时,如何确保此“显示主窗口”菜单项可用?
修改 通过取消选中父菜单项的“自动启用项目”,我使菜单项不灰显。
这使得在应用程序的标准NSDocument类中使用此方法:
- (IBAction)clickMinimizeButton:(id)sender {
NSWindow *ww=[[NSApplication sharedApplication] mainWindow];
NSLog(@"%@",ww);
}
而ww是一个有效的对象。
问题是,我无法从最小化/关闭状态恢复窗口,因为方法在 时不会被调用。
当窗口最小化/关闭时,如何调用此方法?我想简单地做一些与最小化或关闭点击相反的事情。
应用程序中只有一个窗口,再次单击停靠栏图标会显示窗口,但Apple需要一个菜单项才能完成相同的操作。
似乎我必须将菜单项连接到由我创建的自定义应用程序方法(例如,当然没有应用程序方法可以恢复所有窗口),但我不知道在哪里声明它,因为我'我对Cocoa的体验不如Cocoa Touch。
编辑2: 从上面开始,我在应用程序委托中创建了一个方法,并将其连接到菜单项。即使在最小化时也会调用该方法,但我不知道恢复主窗口的正确代码。这种绝望的尝试当然只会激活已经激活的应用程序,而不是最小化的窗口。
NSApplication *theapp=[NSApplication sharedApplication];
[theapp activateIgnoringOtherApps:YES];
所以这就是现在剩下的一切。如何在默认应用程序中模拟标准的“Bring All to Front”菜单项?我将看看Apple的一些标准窗口Mac应用程序。
编辑3: 我创建了一个标准的Cocoa应用程序,当窗口最小化时,它也会使窗口菜单中的所有菜单项变灰。但默认的NSDocument会自动添加到这些下面,并且不会显示为灰色。我会对这样的解决方案感到满意。
出于某种原因,在我的窗口菜单中,我的NSDocument会自动显示不。 Info.plists是相同的(除了指向不同名称的NSDocument类,当然)。
我如何
a)以编程方式将文档添加到该菜单
b)让Window菜单自动添加,就像在标准应用程序中一样,或
c)用标准应用程序中的窗口菜单替换我的“损坏的”窗口菜单(如果是这种情况),其行为符合预期?
答案 0 :(得分:0)
尝试将您的方法重命名为其他内容。已在NSWindowController中声明showWindow:
,这可能会产生冲突。还要确保不会释放假定响应菜单项的对象。
答案 1 :(得分:0)
你实现了showWindow吗?
- (void)showWindow {
if (!self.window) {
[NSBundle loadNibNamed:@"MainWin" owner:self];
}
[self.window makeKeyAndOrderFront:self];
}
P.S。关闭窗口window
- > autoreleased
)Behavior
Release When Closed
不得{/ 1}}