Initwithnibname:bundle:无法从资源包中加载带有2个视图控制器的xib

时间:2014-10-20 21:27:14

标签: objective-c macos cocoa bundle nsviewcontroller

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

这些是我采取的步骤:

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

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

3)在我的Products组中,捆绑包出现,我将此引用拖到我的主应用程序目标的构建阶段的Copy Bundle Resources中。

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:调用之后,self没有我在nib中定义的2个视图控制器。

我想说这与initwithnibname实际上没有加载包含视图控制器的nib这一事实有关?但我的理解是shakey,苹果笔尖文档并没有真正触及我。我也可以用我的xib创建我的VC错误...

有人可以帮我解决这个问题吗?我基本上花了整整一天的时间来敲打这个。提前谢谢!

1 个答案:

答案 0 :(得分:0)

Welp我确定有一个更好的解决方案,但我最终只是访问了基本视图控制器的view属性,然后它将加载在xib中声明的视图控制器