Je pensais peut-être que quelque chose comme ceci pourrait fonctionner:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Je veux supprimer tous les types de sous-vues. UIImages, boutons, champs de texte, etc.
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
C'est identique à votre variante, mais légèrement plus court.
self.view.subviews.forEach({ $0.removeFromSuperview() })
Version identique dans Swift.
Rapide:
extension UIView {
func removeAllSubviews() {
for subview in subviews {
subview.removeFromSuperview()
}
}
}
Vous pouvez utiliser comme ça
//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 est la vue dont vous souhaitez tout supprimer. vous supprimez simplement chaque sous-vue en faisant pour chaque
Pour Swift 4 + .Vous pouvez créer une extension à UIView
. Appelez-le chaque fois que nécessaire.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}