我有两个NIB
ParentViewController.xib
ChildViewController.xib
ParentViewController.xib包含一个UIView和一个UIViewController。 ChildViewController.xib包含一个UIButton
我希望ChildViewController.xib加载到ParentViewController.xib的UIView
我做了以下事情:
我希望这会在ChildViewController中将ChildViewController加载到我的UIView中,但没有运气。
我确实得到了以下警告,这可能是罪魁祸首:
'View Controller (Child View)' has both its 'NIB Name' property set and its 'view' outlet connected. This configuration is not supported.
我还在ParentViewController的viewDidLoad()中添加了其他代码:
- (void)viewDidLoad {
[super viewDidLoad];
ChildViewController *childViewController = [[ChildViewController alloc]initWithNibName:@"ChildViewController" bundle:nil];
childViewController.view = self.myView;
}
有关为什么ChildViewController未在ParentViewController的UIView中加载的任何想法?
答案 0 :(得分:6)
试试这个
[self.myview addSubview: childViewController.view];
而不是
childViewController.view = self.myView;
答案 1 :(得分:5)
另一种方法是在Nib中构建“嵌入式”视图(!),比如ChildView.xib
,然后在ParentViewController.xib
中实例化它(更改Identity检查器中的类)。无需在父视图控制器的[self.view addSubview:embeddedView]
方法中以编程方式-viewDidLoad
。
我在一篇冗长的博客文章中写了我们embed custom-view Nibs inside other Nibs的内容。紧要关系是覆盖-awakeAfterUsingCoder:
类中的ChildView
,将从“父”Nib加载的对象替换为从“子”Nib加载的对象。
请注意,我们的自定义控件是子类UIView
,而不是UIViewController
(请参阅Apple's docs on Custom view controllers:“您不应使用多个自定义视图控制器来管理同一视图层次结构的不同部分。”)