I have two NIB's
ParentViewController.xib
ChildViewController.xib
ParentViewController.xib contains a UIView and a UIViewController. ChildViewController.xib contains a UIButton
I want ChildViewController.xib to load in the ParentViewController.xib's UIView
I have done the following:
- Created @property for UIView in ParentViewController
- Connected File's Owner to UIView in ParentViewController
- Set UIViewController in ParentViewController's NIB Name property to ChildViewController in Interface Builder
- Set ChildViewController view property to UIView in ParentViewController
I was hoping this would load ChildViewController into my UIView in ParentViewController but no luck.
I did get the following warning, which could be the culprit:
'View Controller (Child View)' has both its 'NIB Name' property set and its 'view' outlet connected. This configuration is not supported.
I also have added additional code in ParentViewController's viewDidLoad():
- (void)viewDidLoad {
[super viewDidLoad];
ChildViewController *childViewController = [[ChildViewController alloc]initWithNibName:@"ChildViewController" bundle:nil];
childViewController.view = self.myView;
}
Any thoughts on why ChildViewController does not load in the UIView of ParentViewController?
The alternative is to build the "embedded" view (!) in a Nib, say
ChildView.xib
, then instantiate it in theParentViewController.xib
(change the class in the Identity inspector). There is no need to programmatically[self.view addSubview:embeddedView]
in the parent view controller's-viewDidLoad
method.I wrote up how we embed custom-view Nibs inside other Nibs in a longish blog post. The crux is overriding
-awakeAfterUsingCoder:
in theChildView
class, replacing the object loaded from the "parent" Nib with the one loaded from the "child" Nib.Note that our custom controls subclass
UIView
, notUIViewController
(see Apple's docs on Custom view controllers: "You should not use multiple custom view controllers to manage different portions of the same view hierarchy.")Try this
instead of