像标题一样,[myWindowController showWindow:nil]不起作用.以下是您可能需要了解的一些事实:
>我的窗口控制器:KRAuthenticationWindowController
>界面构建器文件:AuthenticationWindow.xib
>文件的所有者是KRAuthenticationWindowController
窗口出口连接到窗口
>窗口的代表连接到文件的所有者
>启动时的窗口可见未被选中
>关闭时的窗口释放也被取消选中
我的代码如下:
// KRApplicationDelegate.m - (void)applicationDidFinishLaunching:(NSNotification *)notification { NSLog(@"%s",__PRETTY_FUNCTION__); KRAuthenticationWindowController *authWindowController = [[KRAuthenticationWindowController alloc] init]; [authWindowController showWindow:nil]; [[authWindowController window] makeKeyAndOrderFront:nil]; } // KRAuthenticationWindowController.m - (id)init { self = [super initWithWindowNibName:@"AuthenticationWindow"]; if(!self) return nil; NSLog(@"%s",__PRETTY_FUNCTION__); return self; } - (void)loadWindow { [super loadWindow]; [self.window setBackgroundColor:[NSColor colorWithDeviceWhite:0.73 alpha:1]]; NSLog(@"%s",__PRETTY_FUNCTION__); } - (void)windowDidLoad { [super windowDidLoad]; NSLog(@"%s",__PRETTY_FUNCTION__); } - (void)showWindow:(id)sender { [super showWindow:sender]; NSLog(@"%@",self.window); NSLog(@"%s",__PRETTY_FUNCTION__); }
我的控制台输出:
2013-02-24 16:21:45.420 Application[3105:303] -[KRApplicationDelegate applicationDidFinishLaunching:] 2013-02-24 16:21:45.421 Application[3105:303] -[KRAuthenticationWindowController init] 2013-02-24 16:21:45.428 Application[3105:303] -[KRAuthenticationWindowController loadWindow] 2013-02-24 16:21:45.428 Application[3105:303] -[KRAuthenticationWindowController windowDidLoad] 2013-02-24 16:21:45.556 Application[3105:303] <NSWindow: 0x10016e860> 2013-02-24 16:21:45.556 Application[3105:303] -[KRAuthenticationWindowController showWindow:]
我想我只是想念一些重要的东西.任何帮助将不胜感激.
解决方法
尝试将authWindowController转换为实例变量.目前,它是一个局部变量.当局部变量消失时,窗口控制器可能会被释放,窗口被释放,所以它不会被显示出来.