サブビューが親ビューにすでに追加されているかどうかをテストするにはどうすればよいですか?追加されていない場合は追加したいと思います。それ以外の場合は削除します。
UIView
メソッド isDescendantOfView
を使用できます:
if mySubview.isDescendantOfView(someParentView) {
someParentView.mySubview.removeFromSuperview()
} else {
someParentView.addSubview(mySubview)
}
実装によっては、if mySubview != nil
ですべてを囲む必要がある場合もあります。
これは、よりクリーンな方法です。
if myView != nil { // Make sure the view exists
if self.view.subviews.contains(myView) {
self.myView.removeFromSuperview() // Remove it
} else {
// Do Nothing
}
}
}
for view in self.view.subviews {
if let subView = view as? YourNameView {
subView.removeFromSuperview()
break
}
}
ここでは、2つの異なるビューを使用しました。親ビューは、子孫ビューを検索し、親ビューに追加されているかどうかを確認するビューです。
if parentView.subviews.contains(descendantView) {
// descendant view added to the parent view.
}else{
// descendant view not added to the parent view.
}