Wie kann ich testen, ob eine Unteransicht bereits zu einer übergeordneten Ansicht hinzugefügt wurde? Wenn es nicht hinzugefügt wurde, möchte ich es hinzufügen. Ansonsten möchte ich es entfernen.Überprüfen, ob sich eine Unteransicht mit Swift in einer Ansicht befindet
6
A
Antwort
24
Sie können die UIView
Methode isDescendantOfView
:
if mySubview.isDescendantOfView(someParentView) {
someParentView.mySubview.removeFromSuperview()
} else {
someParentView.addSubview(mySubview)
}
Sie auch mit if mySubview != nil
je nach Implementierung alles umgeben benötigen.
6
Dies ist ein viel sauberer Weg, es zu tun:
if myView != nil { // Make sure the view exists
if self.view.subviews.contains(myView) {
self.myView.removeFromSuperview() // Remove it
} else {
// Do Nothing
}
}
}
+0
Ich bin mir nicht sicher, ob es sauberer oder nicht ist, aber es sieht wie eine gute alternative Methode aus. – Suragch
möglich Duplikat [Überprüfen Sie, ob ein Subview in einer Ansicht ist] (http://stackoverflow.com/questions/7421298/check-if- a-subview-is-in-a-view) (wichtig ist, dass diese Frage bereits eine Swift-Antwort hat ...) – nhgrif
Als Antwort auf den Kommentar von nhgrif wurde die Antwort, mit der Sie verlinkt sind (eine Obj-C-Frage), bearbeitet) am selben Tag, an dem Sie den Kommentar gepostet haben. Hatte Swift um 11.45 Uhr, als diese Frage gestellt wurde, und war es eine angemessene Antwort? Wenn ja, warum hast du es aktualisiert? –