Закрытие окна документа и открытие нового, не закрывая документ - PullRequest
0 голосов
/ 18 декабря 2009

Мое приложение основано на документах, но «документ» состоит из двух папок, а не из одного файла. Начальное окно документа содержит пару файловых палитр и кнопку; действие закрывает это окно и открывает новое, отображающее результаты операции между двумя иерархиями папок. (Два окна значительно различаются по размеру; хранить оба представления в виде таблицы в виде табуляции и переключаться между ними было бы нетривиально.)

Вот код из моего метода действия, который закрывает окно средства выбора файлов и открывает окно результатов:

[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];

(Я добавил сообщения сохранения и выпуска в неудачной попытке решить проблему.)

Моя проблема в том, что документ освобождается и освобождается после завершения этого метода действия, несмотря на то, что я говорил начальному оконному контроллеру не закрывать документ. (Это была еще одна неудачная попытка решить проблему.)

Итак, как я могу заменить первое окно другим, для того же документа, без затухания документа?

1 Ответ

1 голос
/ 18 декабря 2009

Я наконец решил это, переключив сообщения removeWindowController: и close:

[self removeWindowController:windowController];
[windowController close];

Это предполагает, что оконный контроллер закрывал свой документ при закрытии. Я не знаю почему, потому что я сказал это не сразу в предыдущей строке.

Я также удалил явные сообщения retain и release. Проблема не вернулась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...