首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Initwithnibname: bundle :无法从资源包加载带有2个视图控制器的xib

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

Stack Overflow用户
提问于 2014-10-20 21:27:13
回答 1查看 380关注 0票数 0

问题的后半部分可能并不重要;但我有一个问题,即从xib加载2个视图控制器,这些控制器已放入资源包中。

以下是我所采取的步骤:

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

2)在我的主要应用程序目标中添加了这个包作为目标依赖项,这样它就可以使用xib构建这个包了

3)在我的产品组中,出现了这个包,在我的主要应用程序目标的构建阶段,我将这个引用拖到Copy参考资料中。

4)我运行并构建,并尝试在我的窗口控制器中加载nib

代码语言:javascript
复制
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实现:

代码语言:javascript
复制
//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这一事实有关吗?但我的理解还不太清楚,苹果笔尖的文档并没有真正传达给我。我也可能在我的xib里创建我的VC.

有人能帮我把这个说清楚吗?我花了一整天的时间在这上面。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-04 21:15:17

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26475210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档