2014-05-21 2 views
2

.xib 파일의 MenuBarItem에서 창에 makeKeyAndOrderFront을 시작한다는 NSWindow가 있습니다.NSWindow를 열 때 메서드를 실행 하시겠습니까?

그러나이 창이 열리면 메소드를 실행하므로 NSWindow를 서브 클래 싱하고 서브 클래스에 윈도우를 설정합니다. 내가 바로 가기를 할 때, 창이 열리면하지만 -(void)makeMainWindow 작업을 수행 할 때 NSLog 아무것도하지 않습니다 -(void)makeKeyWindow

을 할 때, 메인 창없는

.

makeKeyAndOrderFront을 덮어 쓰면 예상대로 표시되지 않습니다.

도움을 주셨습니다. 감사!

+0

어떤 컨트롤러가이 창을 소유? NSWindowController 서브 클래스를 사용하면'windowDidLoad' – stevesliva

+0

@stevesliva를 사용할 수 있습니다. 윈도우 로딩은 윈도우가 보여주는 것과 다릅니다. –

+0

메쏘드는 단지'-makeKeyAndOrderFront'뿐만 아니라 콜론을 갖는'-makeKeyAndOrderFront :'입니다. 그것은 중요한 차이입니다. 기존 메서드를 재정의하지 못했고 아무도 호출하지 않는 새로운 메서드를 만들었을 수 있습니다. 그런데,'-makeKeyAndOrderFront :'를 호출하여 윈도우를 보여주기 때문에, 왜 호출되는지 알려면 호출해야합니까? '-makeKeyAndOrderFront :'를 호출하는 코드는 이미 알고 있습니다. –

답변

3

-makeKeyAndOrderFront:을 오버플로했을 때 윈도우가 나타나지 않는 이유는 사용자가 오버라이드 전화를 super의 구현을 통해 무시했기 때문입니다.

[아스 커에 의해 편집]

코드를 추가하려면, 여기이어야 내용은 다음과 같습니다

- (void)makeKeyAndOrderFront:(id)sender { 
    // what to do when the window is shown: 

    [super makeKeyAndOrderFront:sender]; // key line, you MUST have this 
} 
관련 문제