我有一个nib文件,我在其中加载了我的应用程序中的某个点。将NSWindow IBOutlet从我的AppDelegate链接到第二个nib文件的窗口是否合法?换句话说,我的IBOutlet没有连接到Xcode默认创建的MainMenu xib文件。如果这是合法的,我可以访问NSWindow的框架和其他功能吗?
答案 0 :(得分:6)
是的,你可以这样做。在你的第二个nib文件中,我将使用NSWindowController作为nib的文件所有者。然后在AppDelegate中,创建NSWindowController的一个实例,然后加载nib。从那里,您可以检查NSWindowController拥有的窗口的属性,或者使用窗口执行任何操作。
这是一个例子
@interface MyAppDelegate : NSObject
{
NSWindowController *myWindowController;
}
@end
@implementation MyAppDelegate
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
myWindowController = [[NSWindowController alloc] initWithWindowNibName:@"MySecondWindow"];
[[myWindowController window] center];
[[myWindowController window] makeKeyAndOrderFront:self];
}
@end
答案 1 :(得分:1)
在第二个笔尖中,将文件所有者设置为您的应用程序委托类。然后根据需要在IB内安装插座。在运行时,请致电[NSBundle loadNibNamed:owner:]
并确保将自己作为所有者传递。
答案 2 :(得分:0)
是的,只要App Delegate是您正在加载的笔尖的文件所有者,这将是合法的。也就是说,如果稍后卸载nib,则必须确保nib中的所有顶级对象都已正确释放(否则会造成内存泄漏)。