When my app gets back to its root view controller, in the viewDidAppear: method I need to remove all subviews.
viewDidAppear:
How can I do this?
Get all the subviews from your root controller and send each a removeFromSuperview:
NSArray *viewsToRemove = [self.view subviews]; for (UIView *v in viewsToRemove) { [v removeFromSuperview]; }