这些天来,我开发 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)时,此首选项窗口将重新打开。如果我再次单击它,它将关闭。如果我打开首选项并单击同一个按钮,它将不会重新打开。有趣的是,当 Preferences 窗口第一次打开时,应用程序不会读取 NSLog(@"Hello!?")。当我单击关闭按钮时,它确实如此。你知道我做错了什么吗?
谢谢您的帮助。