2015-02-04 6 views
0

스토리 보드를 사용하는 OS X 10.10에 앱이 있습니다. 내가 시작할 때 주 창을 표시하지 못하게하는 방법을 알아낼 수 없습니다.NSWindow가 스토리 보드 앱 실행시 표시되는 것을 방지하려면 어떻게해야합니까?

나는 창에 'Visible At Launch'확인란을 선택하지 않았습니다. 나는 역 추적을 바라 보았다

...

2015-02-03 19:50:19.714 Itsycal2[20485:620948] -[MyApp showWindow:]: caller: 1 AppKit 0x00007fff8bee4724 NSApplicationMain + 1080 

... 그리고 NSApplicationMain이 -showWindow 호출하는 것 같습니다 : 내 방 창문 컨트롤러에?

시작시 표시되지 않게하는 유일한 방법은 -showWindow : 및 이 아닌 super를 호출하는 것입니다. 하지만 이제는 내가 창피 했어. 창 : 나는 그것을 원하지 않아.

NSApplicationMain이 실행시 -showWindow :를 호출하지 못하게하려면 어떻게해야합니까?

답변

2

HIG에서 모든 Mac 응용 프로그램은 이미 열려있는 창이없는 한 사용자가 응용 프로그램 아이콘을 클릭 할 때 창을 표시해야합니다. 그러면 그 중 하나가 앞으로 이동합니다.

은 showWindow가 호출 될 때 창을 표시해야합니다. 그러나 만약 당신이 정말로 개미를하지 않는다면, 아무 것도하지 않고 showWindow:을 무시하면 (슈퍼를 호출하지 마십시오) 올바른 접근 방법입니다.

앱 아이콘이 클릭되거나 다른 방식으로 앱이 실행되는 경우 showWindow: 이벤트가 응답 체인에 보내집니다. 창 컨트롤러가 "응답자 체인"에 있고 showWindow: 메서드가 있으므로 실행됩니다.

또는 응답기 체인에서 창 컨트롤러를 이동하십시오. 앱 위임자입니까? 아마도 앱 대표는 NSWindowController의 하위 클래스가 아니어야합니다. 서브 클래스를 NSObject으로 변경하면 showWindow: 메소드가 없습니다. NSWindowController 하위 클래스가 없더라도 일부 창이있는 컨트롤러로 사용할 수 있습니다.

이벤트가 트리거되지 않도록 할 수 없습니다. 당신은 그것을 무시하도록 선택할 수 있습니다.

+0

첫째, 빠르고 사려 깊은 답변에 감사드립니다. 스토리 보드 대신 Xib를 사용하여 샘플 앱을 만들고, Xib에서 NSWindowController를 연결하고, 창에서 'Visible At Launch'를 선택 취소하면 창을 표시하지 않고 내 앱이 시작됩니다. showWindow : 메서드는 자동으로 호출되지 않습니다. 나는 이것을 스토리 보드에서 얻을 수 없다. – sam

+0

내 스토리 보드 앱에서 창 컨트롤러가 앱 대리인이 아닙니다. Main.storyboard의 초기 컨트롤러입니다. – sam