我的应用程序是基于文档的,但“文档”包含两个文件夹,而不是一个文件。文档的初始窗口包含几个文件选择器和一个按钮;该操作将关闭该窗口并打开一个新窗口,显示两个文件夹层次结构之间的操作结果。(这两个窗口的大小显着不同;将两个视图都保存在 tables 选项卡视图中并使用它进行切换并非易事。)
这是我的操作方法中关闭文件选择器窗口并打开结果窗口的代码:
[self retain];
NSArray *existingWindowControllers = [[[self windowControllers] copy] autorelease];
for (NSWindowController *windowController in existingWindowControllers) {
[windowController setShouldCloseDocument:NO];
[windowController close];
[self removeWindowController:windowController];
}
[self addWindowController:[[[NSWindowController alloc] initWithWindowNibName:@"ProjectFoldersDocument" owner:self] autorelease]];
[self showWindows];
[self release];
(我在尝试解决问题时添加了保留和释放消息。)
我的问题是,尽管我告诉初始窗口控制器不要关闭文档,但在此操作方法完成后文档会被释放和释放。(这是解决问题的又一次失败尝试。)
那么,对于同一个文档,我怎样才能用另一个窗口替换第一个窗口,而不会使文档消失呢?