2011-08-31 6 views
1

토글 버튼이있을 때 창 아래에서 움직 이도록 결국 OS X 응용 프로그램의 메인 윈도우 하단에 보조 윈도우를 추가하려고합니다. 눌렀다. 내가 말할 수있는 한, SDK로 이것을하는 가장 좋은 방법은 - [NSWindow addChildWindow:ordered:]을 사용하여 창을 자식 창으로 추가하는 것입니다. 그러나, 그 함수를 호출하면 보조 창이 표시되지만 자식 창으로 추가되지는 않습니다. 내가 버튼을 누를 때 여기라는 기능이있다 :하위 창이 제대로 추가되지 않음

- (IBAction)childToggleButtonPressed:(id)sender { 
    [self.window addChildWindow:_secondaryWindowController.window ordered:NSWindowBelow]; 
    NSLog(@"Child Windows: %@", [[self.window childWindows] count]); 
} 

(. 내가 먼저 처음에 표시 확인하는 거니까 아직 해제 코드를 추가하지 않은)

그리고 콘솔에 출력되는 내용은 다음과 같습니다.

2011-08-31 12:37:25.312 Playground[1712:707] Child Windows: (null) 

누가 창을 추가하지 않는 이유와 내가 이것을 해결할 수있는 이유를 아는 사람이 있습니까?

도움이 될만한 추가 컨텍스트는 창 자체와 제목 표시 줄의 배경 이미지를 사용하여 사용자 지정 창을 그려야한다는 것입니다. 수정중인 코드는 http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html에 있습니다.

감사합니다.

편집 : 나는 - [NSWindow addChildWindow:ordered:] 함수를 오버라이드하고 찾을 수있는 정보를 로깅 해 보았으며 창 자체가 기능에 전달되지 않았다. 바라기를 이것은 누군가가 문제를 찾아내는 것을 도울 것입니다!

답변

-1

자식 창에 NSWindowControllers가 없도록함으로써이 문제를 해결했습니다. 분명히 NSWindowController의 윈도우를 자식 윈도우로 할당 할 수 없습니다. 그들을 NSWindow 서브 클래스로 변환하자마자 위에서 설명한 코드 (_secondaryWindowController.window를 창으로 대체)를 사용하여 하위 창으로 추가 할 수 있습니다.

즉, NSWindowController의 창을 자식 창으로 사용하지 말고 NSWindow 만 사용하십시오.

관련 문제