非基于文档的Cocoa应用程序中的多个窗口
我正在构建一个非基于文档的cocoa应用程序,我希望其行为如下:非基于文档的Cocoa应用程序中的多个窗口,cocoa,osx-lion,nswindowcontroller,Cocoa,Osx Lion,Nswindowcontroller,我正在构建一个非基于文档的cocoa应用程序,我希望其行为如下: 主窗口包含一个带有项目列表(由核心数据支持)的表视图 每个项目都应该在自己的窗口中打开 同样,单击new item按钮应打开一个新的item窗口,可同时打开多个这样的窗口 在当前处理表视图的my app delegate中,我实现了以下方法来打开一个新的项目窗口: -(IBAction)newItem:(id)sender { MyItemWindowController *itemController = [[My
- 主窗口包含一个带有项目列表(由核心数据支持)的表视图
- 每个项目都应该在自己的窗口中打开
- 同样,单击new item按钮应打开一个新的item窗口,可同时打开多个这样的窗口
-(IBAction)newItem:(id)sender {
MyItemWindowController *itemController = [[MyItemWindowController alloc]initWithWindowNibName:@"MyItemWindowController"];
[itemController showWindow:self];
}
窗口确实显示,,但它几乎立即消失。但是,如果我实例化了一个窗口控制器,它是appDelegate的一个实例变量,那么该窗口确实会保持不变,但显然,在任何给定的时间,只有一个这样的窗口可以保持打开状态
我真的很想拥有上面提到的功能,但不想使用基于文档的体系结构,因为我不需要将项目作为文档保存到磁盘
有什么建议吗?我知道我一定错过了一些非常基本的东西,但我就是想不出来 我猜您的窗口是因为ARC而消失的(对它不太熟悉,所以我不确定这是否是原因),所以请按您所说的做,但不要使用MyItemWindowController作为实例变量,有一个数组作为实例变量,它可以在需要另一个新窗口时添加一个新窗口控制器。我猜您的窗口会因为ARC而消失(不太熟悉,所以我不确定这是否是原因),所以只需照您所说的做,而不是用MyItemWindowController作为实例变量,使用一个数组作为实例变量,在需要另一个新窗口时添加一个新的窗口控制器。谢谢,这很有效。。事实上,我之前尝试过这样做,但忘记初始化数组:)以及如何在关闭窗口时释放每个窗口?嗯,我想你只要告诉AppDelegate的窗口数组删除与关闭窗口相等的对象即可。谢谢,这很有效。。事实上,我之前尝试过这样做,但忘记初始化数组:)以及如何在关闭窗口时释放每个窗口?嗯,我认为您只需告诉AppDelegate的窗口数组移除与关闭窗口相等的对象。