이것은 this question의 후속 작업입니다. 나는 다음과 같은 코드가 있습니다 : [창에서 IsVisible] 내가 쿼리하는 데 사용할 수있는 메시지 만이있다코코아에서 메인 윈도우를 보이게하는 방법?
- (BOOL)applicationShouldHandleReopen:(NSApplication *)app hasVisibleWindows:(BOOL)flag {
NSLog(@"Has visible windows: %d, main window visible: %d", flag, [[app mainWindow] isVisible]);
if (!flag) {
// I need to make mainWindow visible again here. HOW???
// I tried the following but it has no effect.
// [[app mainWindow] makeKeyAndOrderFront:self];
return NO;
} else {
return YES;
}
}
없이 해당
감사합니다. 도움이됩니다. 예, "메인 윈도우"에서 조금 더 기대하고 있었고 더 특별하다고 생각한 것 같습니다. NIB 파일을보고 있기 때문에 혼란 스럽습니다. 응용 프로그램과 창을 나란히 보았습니다. 하지만 분명히 다른 라이프 사이클 정책을 가지고 있으며 Window는 실제로 영구 객체가 아닙니다. 그럼 내가 물어 보도록하겠습니다. 내 앱을 통해 하나의 창만 갖고 싶다면 무엇을 할 수 있을까요? 어떻게 든 컨트롤러에 객체를 유지해야합니까? applicationShouldHandleReopen이 호출 될 때마다 NIB에서 다시로드해야합니까? 또는? – Jaanus
예, Mac OS X에서는 응용 프로그램과 윈도우가 동일하지 않으며 응용 프로그램에 다른 모든 최상위 윈도우가 포함되어 있지 않습니다. 그리고 네, 당신은 그것이 존재하기를 원하는 한 창을 유지합니다. 기존의 것을 중지하고 닫으려면 (IB의 해당 상자가 체크되지 않은 경우) 해제하십시오. 동일한 펜촉을 두 번 이상로드하는 것이 가능하고 때로는 바람직합니다.하지만이 때마다 펜촉의 새 복사본을 줄 것입니다.이 경우 원하는 것은 아닙니다. –
덕분에 ... 후속 조치로, 마침내 주 응용 프로그램 컨트롤러를 NSWindowController의 하위 클래스로 만들고 원하는 창에 "창"콘센트를 가리켜 서 원하는대로 작동 시켰습니다. 이 방법은 창을 영구적으로 유지합니다. – Jaanus