cocoa - 非基于文档的 Cocoa 应用程序中的多个窗口

标签 cocoa osx-lion nswindowcontroller

我正在构建一个非基于文档的 cocoa 应用程序,我希望其行为如下:

  • 主窗口包含一个带有项目列表的表格 View (由核心数据支持)。
  • 每个项目都应在自己的窗口中打开
  • 同样,单击“新项目”按钮应打开一个“新项目”窗口,并且可以同时打开多个此类窗口。

在当前处理 TableView 的应用程序委托(delegate)中,我实现了以下方法来打开新的项目窗口:

-(IBAction)newItem:(id)sender {

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

    [itemController showWindow:self];

}

窗口确实显示,但它几乎立即消失。但是,如果我实例化一个窗口 Controller ,它是我的 appDelegate 的实例变量,则该窗口确实会保留下来,但显然,在任何给定时间只有一个这样的窗口可以保持打开状态。

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

有什么建议吗?我知道我一定错过了一些非常基本的东西,但我就是无法弄清楚!

最佳答案

我猜你的窗口因为ARC而消失了(不太熟悉它,所以我不确定这是否是原因),所以就按照你说的做,但不要将 MyItemWindowController 作为你的实例变量,有一个数组作为实例变量,每当您需要另一个新窗口时,它都会添加一个新的窗口 Controller 。

关于cocoa - 非基于文档的 Cocoa 应用程序中的多个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577998/

相关文章:

macos - 虚拟环境列表

mysql - database.yml 中的用户名和密码正确,但密码不被接受

ruby - 在 os x 上安装 pg 0.15.1 时出错

macos - NSWindowController/NSDocument 生命周期(关闭)

Cocoa:接收已运行应用程序的停靠图标单击

macos - 撤消/重做菜单项不适用于基于文档的应用程序 OSX 10.7

cocoa - 如何获取通过 Active Directory 登录 Mac 的用户的域名

cocoa - 使用 autoLayout 的 NSScrollView 上方的按钮

cocoa - 如何使 NSTableView Row 内的按钮响应所表示的对象