我有一个nib文件,在我的应用程序的某个点上加载。我是否可以将AppDelegate中的NSWindow IBOutlet链接到第二个nib文件的窗口?换句话说,我的IBOutlet没有连接到Xcode默认创建的MainMenu xib文件。如果这是合法的,我可以访问NSWindow的框架和其他功能吗?
我有一个nib文件,在我的应用程序的某个点上加载。我是否可以将AppDelegate中的NSWindow IBOutlet链接到第二个nib文件的窗口?换句话说,我的IBOutlet没有连接到Xcode默认创建的MainMenu xib文件。如果这是合法的,我可以访问NSWindow的框架和其他功能吗?
是的,你可以这样做。在你的第二个nib文件中,我建议使用NSWindowController作为文件的所有者。然后在你的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
[NSBundle loadNibNamed:owner:]
并确保将 self 作为所有者传递。是的,只要应用程序委托是您加载的nib文件的文件所有者,这就是合法的。话虽如此,如果您稍后卸载nib,则必须确保nib中的所有顶级对象都已正确释放(否则会创建内存泄漏)。