Do I have to call addSubview after calling addChildViewController?

Ricardo picture Ricardo · Apr 13, 2012 · Viewed 22.9k times · Source

I'm trying to create a container view controller using iOS5 and new methods like addChildViewController.

Do I have to call addSubview after calling addChildViewController?

Do I have to call removeFromSuperview before calling removeChildViewController?

I don't see anything about this in Apple docs. What do you think?

Answer

Peter Lapisu picture Peter Lapisu · Apr 20, 2013

1) Do I have to call addSubview after calling addChildViewController?

Yes

2) Do I have to call removeFromSuperview before calling removeChildViewController?

Not quite

You should call removeFromParentViewController: instead of removeChildViewController: You should also call willMoveToParentViewController:

For adding / removing, you can refer to this great category :

UIViewController + Container

- (void)containerAddChildViewController:(UIViewController *)childViewController {

    [self addChildViewController:childViewController];
    [self.view addSubview:childViewController.view];
    [childViewController didMoveToParentViewController:self];

}

- (void)containerRemoveChildViewController:(UIViewController *)childViewController {

    [childViewController willMoveToParentViewController:nil];
    [childViewController.view removeFromSuperview];
    [childViewController removeFromParentViewController];

}

Official resource at developer.apple.com