我正在研究一个项目,该项目将上传包含NSViewController的自定义NSBundles。在我的主程序中,我有以下代码来处理加载后的bundle...
id principalClass = [loadedBundle principalClass];
id instance = [[principalClass alloc] init];
[localLabel setStringValue:[instance name]];
NSView *incomingView = [[instance viewController] view];
[localView addSubview:incomingView];
[localView display];
而bundle中主要类的初始化方法如下所示...
-(id) init {
if(self = [super init]){
name = @"My Plugin";
viewController = [[ViewController alloc] initWithNibName:@"View" bundle:nil];
}
return self;
}
View.nib是位于bundles项目中的nib文件。但是每当我加载bundle时,就会出现以下错误...
2010-05-27 09:11:18.423 PluginLoader[45032:a0f] unable to find nib named: View in bundle path: (null) 2010-05-27 09:11:18.424 PluginLoader[45032:a0f] -[NSViewController loadView] could not load the "View" nib.
我知道我已经将所有东西连接起来,因为[label setStringValue:[instance name]];
这行代码可以正确地设置标签文本。此外,如果我将bundle中的所有类加载到我的主应用程序项目中,一切都按预期工作。有什么想法可以让我正确地引用bundle中的“View”?
谢谢!
[loadedBundle principalClass]
返回的类型是Class
,而不是id
。出于可读性的原因,我可能会在principalClass
变量中使用Class
类型。 - dreamlax