问题的后半部分可能无关紧要;但是我在从xib中加载2个viewcontrollers时出现了问题,我已将其放入资源包中。
这些是我采取的步骤:
1)创建一个类型为bundle的新目标。在复制资源包中,我添加了我想要的xib包。
2)在我的主应用目标中添加了此捆绑包作为目标依赖项,以便它使用xib构建捆绑包
3)在我的Products组中,捆绑包出现,我将此引用拖到我的主应用程序目标的构建阶段的Copy Bundle Resources中。
4)我运行并构建,并尝试使用
在我的windowcontroller中加载nibself.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错误...
有人可以帮我解决这个问题吗?我基本上花了整整一天的时间来敲打这个。提前谢谢!
答案 0 :(得分:0)
Welp我确定有一个更好的解决方案,但我最终只是访问了基本视图控制器的view
属性,然后它将加载在xib中声明的视图控制器