web-dev-qa-db-fra.com

Quel est le meilleur moyen de supprimer toutes les sous-vues de vous-même?

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.

83
user440096
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];

C'est identique à votre variante, mais légèrement plus court.

240
Max
self.view.subviews.forEach({ $0.removeFromSuperview() })

Version identique dans Swift.

16
lcl

Rapide:

extension UIView {
    func removeAllSubviews() {
        for subview in subviews {
            subview.removeFromSuperview()
        }
    }
}
6
mixel

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

1
spikee

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() }
    }
}
0
ishwardgret