Initwithnibname:bundle: 无法从资源包中加载带有 2 个视图控制器的 xib
Posted
技术标签:
【中文标题】Initwithnibname:bundle: 无法从资源包中加载带有 2 个视图控制器的 xib【英文标题】:Initwithnibname:bundle: can't load xib with 2 view controllers from a resource bundle 【发布时间】:2014-10-20 21:27:13 【问题描述】:问题的后半部分可能无关紧要;但我从已放入资源包的 xib 加载 2 个视图控制器时遇到问题。
这些是我采取的步骤:
1) 创建一个新的目标,类型为 bundle。在复制资源包中,我为这个包添加了我想要的 xib。
2)在我的主应用程序目标中添加此捆绑包作为目标依赖项,以便它将使用 xib 构建捆绑包
3)在我的 Products 组中,出现了捆绑包,我将此引用拖到了我的主应用目标的构建阶段的 Copy Bundle Resources 中。
4)我运行并构建,并尝试在我的窗口控制器中加载笔尖
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 的事实有关吗?但我的理解是不稳定的,苹果笔尖文档并没有真正到达我的手中。我也可能在我的 xib 中错误地创建了我的 VC...
谁能帮我把这个拼出来?我基本上整天都在努力解决这个问题。提前致谢!
【问题讨论】:
【参考方案1】:我确信有更好的解决方案,但我的最终只是访问基本视图控制器的 view
属性,然后它会去加载在 xib 中声明的视图控制器
【讨论】:
以上是关于Initwithnibname:bundle: 无法从资源包中加载带有 2 个视图控制器的 xib的主要内容,如果未能解决你的问题,请参考以下文章
我啥时候需要调用 -[UIViewController initWithNibName:bundle:]?
Initwithnibname:bundle: 无法从资源包中加载带有 2 个视图控制器的 xib