2009-12-18 7 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]; 

(I는 추가 유지하고 문제를 해결하려는 시도가 실패한 메시지를 놓습니다.)

내 문제는이 작업 방법이 끝난 후 문서 내 이야기에도 불구하고, 발표 및 할당 해제됩니다 있다는 것입니다 초기 윈도우 콘트롤러는 문서를 닫지 않는다. (그 또 다른 시도가 문제를 해결하지 못했습니다.)

그럼, 문서가 사라지지 않고 같은 문서에 대해 첫 번째 창을 다른 것으로 바꿀 수 있습니까?

답변

1

드디어 removeWindowController:close 메시지를 전환하여이 문제를 해결 :

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

이 창 컨트롤러 가까이에 그 문서를 닫는 것을 제안했다. 이유는 모르겠지만, 바로 이전 줄에는 말하지 않았기 때문에.

나는 또한 명시적인 retainrelease 메시지를 제거했습니다. 문제는 반환되지 않았습니다.