我正在处理一个项目,在这个项目中,我创建了一个.xib
文件,并希望加载在xib文件中创建的窗口。
我尝试了以下代码,但没有结果:
- (id) initWithWindowNibName: (NSString *) windowNibName
{
self = [ super initWithWindowNibName: windowNibName];
if ( self != nil )
{
[ self window ];
}
return self;
}
我正在调用initWithWindowNibName
方法,希望它能够加载与当前控制器相关联的窗口。基本上,我是在黑暗中扔飞镖!
实际上,对于如何将创建的nib与控制器关联起来,以便上面的代码实际加载窗口,我几乎一无所知。我能够关联各种IBOutlets
和IBActions
,但只是无法加载窗口。
我是否走错了路径,还是有特定的方法调用来加载窗口?
编辑:[super initWithWindowNibName: windowNibName]
调用是对NSWindowController
的调用,它是这个控制器类的超类。
发布于 2013-12-09 00:32:35
你称之为:
self.myWindowController = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
然后你需要显示窗口:
[self.myWindowController showWindow:self]; //self or nil
或者,如果您想将其加载到工作表中:
[NSApp beginSheet: [self.myWindowController window]
modalForWindow: self.window
modalDelegate: self
didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo: nil];
编辑:
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
...//other initiliasation codes here
}
return self;
}
发布于 2013-12-09 20:55:42
是否需要将文件添加到Xcode项目设置的构建阶段部分的Copy参考资料中?
如果你所说的“文件”是指笔尖,那么是的。
您需要将其添加到Copy参考资料阶段,以便将已编译的nib放入包的参考资料文件夹中。否则,Xcode将不会编译xib,也不会将xib的一个nib放在包的参考资料文件夹中。
如果您的nib不在包的Resources文件夹中,那么您将无法从它加载任何内容。
将您的nib添加到Copy参考资料阶段的最简单方法是在中选择nib,打开File检查器,并选中要在其中使用nib的目标的框。
Xcode在创建新的nib (或包含一个nib的窗口控制器或视图控制器)时提示您输入此信息。最后一个步骤是选择要将其添加到哪个目标。在创建新的nib (直接或副作用)时,请确保检查该列表,并确保选中了正确的框集。
https://stackoverflow.com/questions/20466153
复制