我不明白这里发生了什么。我有一个按钮连接到 AppDelegate 中的以下操作:
- (IBAction)openWindow:(id)sender {
self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
}
单击按钮时没有任何反应(如预期的那样),但是当我将代码更改为(添加NSLog()
)
- (IBAction)openWindow:(id)sender {
self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
NSLog(@"%@",self.winCon.window);
}
弹出“NewWindow”窗口。为什么会这样?NSLog 也会(null)
在控制台中打印。
(在“NewWindow”xib 中,文件的所有者是 NSObject,我没有连接窗口引用。所以我期待打印日志null
,但显示的窗口令人惊讶)
另一件事,当我使用时:
- (IBAction)openWindow:(id)sender {
[NSBundle loadNibNamed:@"NewWindow" owner:self.winCon];
}
单击按钮时,将显示窗口。为什么会这样?不加载笔尖并显示窗口分隔的进程。我不应该调用showWindow:
ormakeKeyAndOrderFront:
来显示窗口吗?
当我在窗口编程指南中阅读特定的苹果文档时:
打开一个窗口——也就是说,使一个窗口可见——通常是通过调用 NSWindow 中的 makeKeyAndOrderFront:、orderFront: 等方法之一将窗口放入应用程序的窗口列表中来完成的。此外,在 Interface Builder 中设置了某些位,在某些情况下加载 nib 文件时会显示该窗口。
我想这就是loadNibNamed:..
打开窗户的原因。但是这些“在 Interface Builder 中设置的位”是什么。我在哪里可以获得这方面的信息?(当我取消选中窗口的“启动时可见”属性时,我也可以在上述情况下阻止窗口打开- 如果对这个属性的作用有更多解释会有所帮助。)谢谢。
注意:我知道如何使用 NSWindowController 子类初始化 nib 并在 xib 中进行正确的接线,但我只是对上述行为感到好奇。