IBOutlet link to embedded view controller

Dan F picture Dan F · Oct 1, 2012 · Viewed 17.9k times · Source

I have a complex iPad view that I manage by having several view controllers. I previously (before iOS6/XCode 4.5) did this by allocating my view controllers in code, and hooked up the various views to them though links to the master view.

What I would like to do is use the new container views to embed the view controllers in the storyboard file. I don't seem to be able to make an IBOutlet link to the embedded view controller to the master controller.

Is it possible to do this? Or to retrieve the embedded controller via a tag or something in the code?

This question is SPECIFICALLY about using container views

Answer

PlayfulGeek picture PlayfulGeek · Dec 11, 2012

Another option for some cases is to capture the embedded controller using -prepareForSegue:sender:.

For example, if I have a UINavigationController embedded within a CustomContainerViewController, I can name the embed segue embedContentStack in the storyboard and capture it in CustomContainerViewController via

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"embedContentStack"]) {
        // can't assign the view controller from an embed segue via the storyboard, so capture here
        _contentStack = (UINavigationController *)segue.destinationViewController;
    }
}