這是this question的後續行動。我有以下代碼:如何使主窗口在可可中可見?
- (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;
}
}
有[窗口ISVISIBLE]消息,我可以用它來查詢,但沒有相應的調用setVisible或「秀」 ......
謝謝,這很有幫助。是的,看起來我期待從「主窗口」多一點,並認爲它更特別。 我想我很困惑,因爲我正在看我的NIB文件,並且看到Application和Window並排。但顯然他們有不同的生命週期策略,Window並不是一個真正的持久對象。 那麼讓我問一下 - 如果我想通過我的應用程序只有一個窗口,那麼最適合做什麼?我應該在控制器中以某種方式保留對象嗎?每次調用applicationShouldHandleReopen時,是否應該從NIB重新加載它?要麼? – Jaanus
是的,應用程序和窗口在Mac OS X中不是同一個東西,而且您的應用程序沒有包含所有其他應用程序的頂級窗口。是的,只要你希望它存在,你就會保留這個窗口。當你想讓它停止時,關閉它並(如果IB中相關的框未被選中)釋放它。有可能,有時候最好是多次加載同一個筆尖 - 但是這會每次給你一個筆尖中對象的新副本,這在這種情況下不是你想要的。 –
謝謝...作爲一個後續,我終於通過使我的主應用程序控制器成爲NSWindowController的一個子類,並將其「窗口」出口指向所需的窗口,從而使它工作。這種方式窗口是持久的。 – Jaanus