這些天來,我開發iPad應用程序。由於我已經用完了主題,因此我正在開發一個簡單的OS X應用程序,以瞭解我可以走多遠。禁用窗口
無論如何,我想要做的是顯示一個首選項窗口(PrefWindowController)。它有一個來自MainMenu.xib的單獨的xib(PrefWindowController.xib)。當它出現時,我希望主窗口在它後面。以下是我的。
// AppDelegate.m
- (void)preferencesClicked:(id)sender {
if (!preferencesWindow) {
preferencesWindow = [[PrefWindowController alloc] initWithWindowNibName:@"PrefWindowController"];
}
[preferencesWindow showWindow:self];
}
// PrefWindowController.m
- (void)windowDidLoad {
[super windowDidLoad];
[NSApp runModalForWindow:self.window];
NSLog(@"Hello!?");
}
- (IBAction)closeClicked:(id)sender {
[NSApp stopModal];
[self close];
}
所以我知道我可以使用runModalForWindow把當前窗口在主窗口的頂部。我遇到的問題是,當點擊關閉按鈕(closeClicked)時,此首選項窗口將重新打開。如果我再次點擊它,它會關閉。如果我打開首選項並單擊相同的按鈕,它將不會重新打開。有趣的是,當首選項打開時,應用程序不會讀取NSLog(@「Hello !?」)。當我點擊關閉按鈕時它會發生。你知道我做錯了什麼嗎?
謝謝你的幫助。
謝謝。這兩個建議都不適合我的目標。如果我使用NSPanel並將樣式設置爲Utility,那麼面板將始終位於主窗口的頂部。但主窗口不會被禁用,除非我做錯了什麼。 – 2013-05-07 01:29:28
好的。我知道了。我想我必須在MainMenu.xib中創建一個Preferences窗口。 – 2013-05-07 04:39:06
嘗試一些OSX應用程序,特別是蘋果應用程序。您會看到,約定窗口打開時不會禁用主窗口。 並且不,在正常情況下在不同的xib中使用首選項比MainMenu優先。 – 2013-05-07 10:20:21