问题的后半部分可能并不重要;但我有一个问题,即从xib加载2个视图控制器,这些控制器已放入资源包中。
以下是我所采取的步骤:
1)创建一个类型为bundle的新目标。在复制资源包中,我为这个包添加了我想要的xib。
2)在我的主要应用程序目标中添加了这个包作为目标依赖项,这样它就可以使用xib构建这个包了
3)在我的产品组中,出现了这个包,在我的主要应用程序目标的构建阶段,我将这个引用拖到Copy参考资料中。
4)我运行并构建,并尝试在我的窗口控制器中加载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这一事实有关吗?但我的理解还不太清楚,苹果笔尖的文档并没有真正传达给我。我也可能在我的xib里创建我的VC.
有人能帮我把这个说清楚吗?我花了一整天的时间在这上面。提前感谢!
发布于 2014-11-04 21:15:17
我确信有一个更好的解决方案,但我的解决方案最终只访问了基本视图控制器的view属性,然后它将加载xib中声明的视图控制器
https://stackoverflow.com/questions/26475210
复制相似问题