2015-06-19 10 views
6

Jak mogę sprawdzić, czy subview został już dodany do widoku nadrzędnego? Jeśli nie został dodany, chcę go dodać. W przeciwnym razie chcę go usunąć.Sprawdź, czy podzbiór jest w widoku, używając Swift

+0

możliwe duplikat [Sprawdź, czy podrzędny jest w widoku] (http://stackoverflow.com/questions/7421298/check-if- a-subview-is-in-a-view) (co ważne, to pytanie ma już odpowiedź Swift ...) – nhgrif

+1

W odpowiedzi na komentarz nhgrifa, odpowiedź, z którą się łączyłeś (pytanie typu Obj-C) była edytowana (przez ciebie) w dniu opublikowania komentarza. Czy miał Swift o 11:45, kiedy to pytanie zostało wysłane i czy była to odpowiednia odpowiedź? Jeśli tak, dlaczego go zaktualizowałeś? –

Odpowiedz

24

Można użyć metody UIViewisDescendantOfView:

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

Być może trzeba otoczyć wszystko z if mySubview != nil zależności od implementacji.

6

Jest to znacznie bardziej przejrzysty sposób to zrobić:

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

     if self.view.subviews.contains(myView) { 
      self.myView.removeFromSuperview() // Remove it 
     } else { 
      // Do Nothing 
     } 
    } 
} 
+0

Nie jestem pewien, czy jest czystszy czy nie, ale wygląda na dobrą alternatywną metodę. – Suragch

Powiązane problemy