非基于文档的Cocoa应用程序中的多个Windows

时间:2012-07-20 11:01:27

标签: cocoa osx-lion nswindowcontroller

我正在构建一个基于非文档的可可应用程序,我想表现如下:

  • 主窗口包含一个带有项目列表的表视图(由Core Data支持)。
  • 每个项目都应在自己的窗口中打开
  • 同样,点击新项目按钮应打开一个新项目窗口,同时可以打开多个这样的窗口。

在我当前处理表视图的app委托中,我实现了以下方法来打开一个新的Item窗口:

-(IBAction)newItem:(id)sender {

    MyItemWindowController *itemController = [[MyItemWindowController alloc]initWithWindowNibName:@"MyItemWindowController"];

    [itemController showWindow:self];

}

窗口显示但几乎立即消失。但是,如果我实例化一个窗口控制器,它是我的appDelegate的一个实例变量,那么窗口确实存在,但很明显,在任何给定的时间只有一个这样的窗口可以保持打开状态。

我真的很想拥有上述功能,但不想使用基于文档的架构,因为我不需要将项目作为文档保存到磁盘。

有什么建议吗?我知道我必须遗漏一些非常基本的东西,但我无法理解它!

1 个答案:

答案 0 :(得分:4)

我猜你的窗口因为ARC而消失了(不太熟悉它,所以我不确定是不是这样),所以只要按照你所说的做,但不要将MyItemWindowController作为你的实例变量,将数组作为实例变量,在需要另一个新窗口时添加一个新的窗口控制器。