如何在非基于文档的应用程序中使用“command + n”创建多个窗口

时间:2013-10-29 12:01:16

标签: macos cocoa

有没有办法在非基于文档的应用程序中使用“command + n”创建/启用多个窗口?我想使用命令+ n

拥有该窗口的无限实例(实际上不是无限制,但可能是6-7个实例)

或者我必须创建一个基于文档的应用程序并将新项目模板中的所有代码移植到唯一的解决方案?

我现在可以看到“新建”的菜单按钮被禁用。

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。 首先将New菜单项连接到IBAction方法。 将方法命名为对您有意义的方法。

接下来,您需要向控制器添加某种属性(简化应用委托),它基本上是一个窗口堆栈,只存储对每个窗口或窗口控制器的引用。 NSMutableArray应该做得很好。

现在您可以通过几种方式完成下一部分,但我建议使用nib / xib创建NSWindowController子类(特别是如果这些窗口中的基本内容相同)。 在nib文件中执行您想要的操作。

现在在您的IBAction方法中,创建一个窗口控制器类的新实例,将其添加到您的可变数组中。告诉它加载它的窗口。

您只需决定是否应从堆栈中删除控制器,如果窗口关闭则设置为nil。 处理这个问题的方法很多,而且你的设计能够知道什么是正确的。

答案 1 :(得分:0)

试试这个: -

NSWindowController *yourWindow=[[[[yourWindowController alloc]init]retain]autorelease];
[yourWindow loadWindow];