使用Swift检查子视图是否在视图中

Sur*_*gch 15 subview uiview ios swift

如何测试子视图是否已添加到父视图?如果尚未添加,我想添加它.否则,我想删除它.

Sur*_*gch 41

您可以使用以下UIView方法isDescendantOfView:

if mySubview.isDescendantOfView(someParentView) {
    someParentView.mySubview.removeFromSuperview()
} else {
    someParentView.addSubview(mySubview)
}
Run Code Online (Sandbox Code Playgroud)

您可能还需要if mySubview != nil根据实施情况包围所有内容.


Rya*_*zzo 16

这是一种更清洁的方法:

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

        if self.view.subviews.contains(myView) {
            self.myView.removeFromSuperview() // Remove it
        } else {
           // Do Nothing
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不确定它是否更干净,但它看起来像是一种不错的替代方法。 (2认同)

Gia*_*ang 11

for view in self.view.subviews {
    if let subView = view as? YourNameView {
        subView.removeFromSuperview()
        break
    }
}
Run Code Online (Sandbox Code Playgroud)


shu*_*ham 6

这里我们使用了两种不同的视图。父视图是我们在其中搜索后代视图并检查是否添加到父视图的视图。

if parentView.subviews.contains(descendantView) {
   // descendant view added to the parent view.
  }else{
   // descendant view not added to the parent view.
}
Run Code Online (Sandbox Code Playgroud)