2009-12-18 4 views
0

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

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

[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

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

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

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

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