To remove all the subviews from any view, you can iterate over the subviews and send each aremoveFromSuperview
call:
// With some valid UIView *view:
for(UIView *subview in [view subviews]) {
[subview removeFromSuperview];
}
This is entirely unconditional, though, and will get rid of all subviews in the given view. If you want something more fine-grained, you could take any of several different approaches:
removeFromSuperview
messages later in the same mannerremoveFromSuperview
individually as necessaryif
statement to the above loop, checking for class equality. For example, to only remove all the UIButtons (or custom subclasses of UIButton) that exist in a view, you could use something like:// Again, valid UIView *view:
for(UIView *subview in [view subviews]) {
if([subview isKindOfClass:[UIButton class]]) {
[subview removeFromSuperview];
} else {
// Do nothing - not a UIButton or subclass instance
}
}
If you wanted to remove a view with a certain tag you could use:
[[myScrollView viewWithTag:myButtonTag] removeFromSuperview];