I was thinking maybe something like this might work:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Swift:
extension UIView {
func removeAllSubviews() {
for subview in subviews {
subview.removeFromSuperview()
}
}
}
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
It's identical to your variant, but slightly shorter.
You can use like this
//adding an object to the view
view.addSubView(UIButton())
// you can remove any UIControls you have added with this code
view.subviews.forEach { (item) in
item.removeFromSuperview()
}
view is the view that you want to remove everything from. you are just removing every subview by doing forEach
For Swift 4+.You can make a extension to UIView
. Call it whenever necessary.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}
self.view.subviews.forEach({ $0.removeFromSuperview() })
Identical version in Swift.