web-dev-qa-db-ja.com

Swiftを使用して、サブビューがビュー内にあるかどうかを確認します

サブビューが親ビューにすでに追加されているかどうかをテストするにはどうすればよいですか?追加されていない場合は追加したいと思います。それ以外の場合は削除します。

22
Suragch

UIViewメソッド isDescendantOfView を使用できます:

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

実装によっては、if mySubview != nilですべてを囲む必要がある場合もあります。

46
Suragch

これは、よりクリーンな方法です。

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

ここでは、2つの異なるビューを使用しました。親ビューは、子孫ビューを検索し、親ビューに追加されているかどうかを確認するビューです。

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