NSWindowController showWindow:nil 啥都不做
Posted
技术标签:
【中文标题】NSWindowController showWindow:nil 啥都不做【英文标题】:NSWindowController showWindow:nil does nothingNSWindowController showWindow:nil 什么都不做 【发布时间】:2013-02-24 15:24:13 【问题描述】:就像标题一样,[myWindowController showWindow:nil]
不起作用。以下是您可能需要了解的一些事实:
KRAuthenticationWindowController
接口生成器文件:AuthenticationWindow.xib
文件的所有者是KRAuthenticationWindowController
window
插座已连接到窗口
Window 的delegate
已连接到文件的所有者
窗口的Visible at launch
未选中
Window 的 Release when closed
也未选中
我的代码如下:
// 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:]
我想我只是错过了一些重要的事情。任何帮助将不胜感激。
【问题讨论】:
也许你有这个问题中描述的问题***.com/questions/3539721/… 【参考方案1】:尝试将 authWindowController 转换为实例变量。目前,它是一个局部变量。当局部变量消失时,可能会释放窗口控制器和带有它的窗口,因此它永远不会显示。
【讨论】:
如果您使用 ARC,可能会发生这种情况,更多详细信息请参见此问题 ***.com/questions/11677043/… 刚刚遇到同样的问题,感谢您的建议 哈哈 我很惊讶自己在完全相同的情况下运行!在 10.11 测试版上,我首先认为这是测试版中的一个错误:P 多么愚蠢;谢谢你的回答!以上是关于NSWindowController showWindow:nil 啥都不做的主要内容,如果未能解决你的问题,请参考以下文章
NSWindowController showWindow: 闪烁窗口
来自 NSWindowController Cocoa 的自定义视图
NSManagedObjectContext 传递给 NSWindowController 变为 nil
Interface builder中的NSWindowController对象链接