Мое приложение основано на документах, но «документ» состоит из двух папок, а не из одного файла. Начальное окно документа содержит пару файловых палитр и кнопку; действие закрывает это окно и открывает новое, отображающее результаты операции между двумя иерархиями папок. (Два окна значительно различаются по размеру; хранить оба представления в виде таблицы в виде табуляции и переключаться между ними было бы нетривиально.)
Вот код из моего метода действия, который закрывает окно средства выбора файлов и открывает окно результатов:
[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];
(Я добавил сообщения сохранения и выпуска в неудачной попытке решить проблему.)
Моя проблема в том, что документ освобождается и освобождается после завершения этого метода действия, несмотря на то, что я говорил начальному оконному контроллеру не закрывать документ. (Это была еще одна неудачная попытка решить проблему.)
Итак, как я могу заменить первое окно другим, для того же документа, без затухания документа?