Objective c Initwithnibname:bundle:无法从资源绑定加载包含2个视图控制器的xib

Objective 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

问题的后半部分可能无关紧要;但是我在从一个xib加载2个ViewController时遇到了一个问题,我已经将其放入了一个资源包中

以下是我采取的步骤:

1创建一个bundle类型的新目标。在复制资源包中,我为这个包添加了我想要的xib

2在我的主应用程序目标中将此捆绑包作为目标依赖项添加,以便使用xib构建捆绑包

3在“我的产品”组中,捆绑包出现,我在主应用程序目标的构建阶段将此引用拖到了复制捆绑包资源中

4我运行并构建,并尝试在windowcontroller中加载nib

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中声明的视图控制器