2011-12-29 2 views
1

빨간색 X를 누르면 창은 사라지지만 설계된대로 상태 표시 줄 항목은 상태 표시 줄에 그대로 있습니다.상태 표시 줄의 메뉴 선택에서 응용 프로그램 창 다시 열기

상태 표시 줄 항목을 클릭하면 메뉴가 열립니다. 선택 사항 중 하나는 응용 프로그램을 다시 여는 것입니다. 앱 컨트롤러에서 작업을 호출 할 수 있지만 내 애플리케이션 창을 열려면 어떻게해야할지 모르겠습니다. 읽은 그

[window makeKeyOrderFront:self]; 

"window"는 컴파일러에서 인식하지 못합니다. 나는 객관적인 c/코코아에 익숙하지 않으므로 확실한 것을 놓치고 있다고 확신합니다. 여기 window

답변

1

당신이 당신의 응용 프로그램에서 NSWindow* 객체를 저장하는 데 사용되는 변수입니다 - 기본 엑스 코드 응용 프로그램 위임 템플릿도 생성 - 당신이 아직도 여전히 일반적으로 응용 프로그램의 위임에 (당신의 클래스 중 하나를 보유하고 있다고 가정 속성은 window). 그러나이 모든 것은 응용 프로그램의 유형에 따라 다르며 응용 프로그램이 문서 기반 인 경우 자동으로 수행해야합니다 (새 문서를 작성하려면 openUntitledDocumentAndDisplay:error:이라고 할 수 있음). 그렇지 않은 경우에는 일반적으로 응용 프로그램 대리인에서 창을 관리하는 것이 전적으로 귀하의 코드에 달려 있습니다.

+0

좋아요, 저는 애플 리케이션 델리게이트에서 window 변수를 봅니다. 나는이 것들이 어떻게 서로 연결되어 있는지 또는 앱 위임이 실제로 무엇인지 이해하지 못한다고 생각한다. 그래서 나는 그것에 액세스 할 수 있도록 app 컨트롤러에 윈도우 객체에 대한 포인터를 전달해야 할 필요가있는 것 같습니다. 나는 그것을 어떻게하는 지 잘 모르겠다. 델리게이트에 컨트롤러의 인스턴스가있는 것처럼 보이지 않습니다. – JonF

+1

앱 델리게이트에서 윈도우 프로퍼티를 생성하는 표준 Xcode 템플릿을 사용했다면 항상 [[NSApp delegate] window]'를 사용할 수 있습니다. –

0

최근에 제가이 문제를 해결했으며, 저에게 도움이되었습니다. 이 세 가지가 AppDelegate에 처리됩니다

// 응답 응용 프로그램 메뉴 선택을 다시

- (IBAction)showMainWindow:(id)sender 
{ 
    [self applicationShouldHandleReopen:nil hasVisibleWindows:YES]; 
    [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; 
} 

당신은 사용자가 닫힌 후 MainWindow를 다시 표시하려면 //이 필요 그것을

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [_window setReleasedWhenClosed:NO]; 
} 

// 사용자가 닫은 후에 MainWindow를 다시 나타나게하려면이 필요함

- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{ 
    [_window setIsVisible:YES]; 
    return YES; 
}