web-dev-qa-db-fra.com

Vérifiez si une sous-vue est dans une vue à l'aide de Swift

Comment tester si une sous-vue a déjà été ajoutée à une vue parent? S'il n'a pas été ajouté, je veux l'ajouter. Sinon, je veux le supprimer.

22
Suragch

Vous pouvez utiliser la méthode UIViewisDescendantOfView :

if mySubview.isDescendantOfView(someParentView) {
    someParentView.mySubview.removeFromSuperview()
} else {
    someParentView.addSubview(mySubview)
}

Vous devrez peut-être également tout entourer de if mySubview != nil selon votre implémentation.

46
Suragch

C'est une façon beaucoup plus propre de le faire:

if myView != nil { // Make sure the view exists

        if self.view.subviews.contains(myView) {
            self.myView.removeFromSuperview() // Remove it
        } else {
           // Do Nothing
        }
    }
}
18
Ryan Cocuzzo
for view in self.view.subviews {
    if let subView = view as? YourNameView {
        subView.removeFromSuperview()
        break
    }
}
4
Giang

Ici, nous avons utilisé deux vues différentes. La vue parent est la vue dans laquelle nous recherchons la vue descendante et vérifions si elle est ajoutée à la vue parent ou non.

if parentView.subviews.contains(descendantView) {
   // descendant view added to the parent view.
  }else{
   // descendant view not added to the parent view.
}
3
shubham