Objective c Initwithnibname:bundle:无法从资源绑定加载包含2个视图控制器的xib
问题的后半部分可能无关紧要;但是我在从一个xib加载2个ViewController时遇到了一个问题,我已经将其放入了一个资源包中 以下是我采取的步骤: 1创建一个bundle类型的新目标。在复制资源包中,我为这个包添加了我想要的xib 2在我的主应用程序目标中将此捆绑包作为目标依赖项添加,以便使用xib构建捆绑包 3在“我的产品”组中,捆绑包出现,我在主应用程序目标的构建阶段将此引用拖到了复制捆绑包资源中 4我运行并构建,并尝试在windowcontroller中加载nibObjective c Initwithnibname:bundle:无法从资源绑定加载包含2个视图控制器的xib,objective-c,macos,cocoa,bundle,nsviewcontroller,Objective C,Macos,Cocoa,Bundle,Nsviewcontroller,问题的后半部分可能无关紧要;但是我在从一个xib加载2个ViewController时遇到了一个问题,我已经将其放入了一个资源包中 以下是我采取的步骤: 1创建一个bundle类型的新目标。在复制资源包中,我为这个包添加了我想要的xib 2在我的主应用程序目标中将此捆绑包作为目标依赖项添加,以便使用xib构建捆绑包 3在“我的产品”组中,捆绑包出现,我在主应用程序目标的构建阶段将此引用拖到了复制捆绑包资源中 4我运行并构建,并尝试在windowcontroller中加载nib self.acco
self.accountController = [myAccountController initWithAccount:account];
//At this point, accountController is initialized correctly,
//but neither of the view controllers are initialized;
//so this view is nil. see below for more info
NSView* myView = self.accountController.myViewController1.view;
//这是accountController实现:
//This method is custom, because I need some arguments in my init
-(instancetype) initWithAccount:(myAccount*)account
{
self = [super initWithNibName:myNibName bundle:[self resourceBundle]
if(self)
{
self.account = account;
}
return self;
}
+(NSBundle*) resourceBundle
{
NSURL* bundleURL = [[NSBundle mainBundle] URLForResource:myBundleName withExtension:@"bundle"];
NSBundle* bundle = [NSBundle bundleWithURL:bundleURL];
NSError* error = nil;
[bundle loadAndReturnError:&error];
NSLog(@"%@", error);
return bundle;
}
返回的捆绑包是正确的,它指向正确的位置,并且所有名称都是正确的。但是在initWithNibName:bundle:call之后,self没有我在nib中定义的2个视图控制器
我想说这与initwithnibname没有实际加载包含视图控制器的nib这一事实有关?但我的理解是不可靠的,苹果nib文档并没有真正达到我的目的。我也可能在我的xib中创建了我的VC错误
有人能帮我把这个解释清楚吗?我基本上已经花了一整天的时间在这上面了。提前谢谢 我确信有更好的解决方案,但我的解决方案最终只是访问了基本视图控制器的视图属性,然后它会去加载在xib中声明的视图控制器