2015-06-19 4 views
6

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

+0

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

+1

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? –

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