如何从我的UIView中仅删除用户添加的子视图

Eps*_*lon 6 uiview ios subviews swift

我正在尝试删除我添加到视图中的所有子视图,因此我实现了一个循环来迭代子视图,其中包含以下内容:

for subview in view.subviews {
    println(subview)
    //subview.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)

我通过在我的视图中添加UILabel来测试它,然后运行此代码.输出包含我的UILabel,但也包含_UILayoutGuide.所以,我的问题是我如何确定子视图是我添加的还是系统添加的子视图?

Lyn*_*ott 13

如果你只是想阻止循环删除_UILayoutGuide(这是类UILayoutSupport),试试这个:

for subview in self.view.subviews {
    if !(subview is UILayoutSupport) {
        print(subview)
        subview.removeFromSuperview()
     }
}
Run Code Online (Sandbox Code Playgroud)

一般来说,如果您想要阻止删除除此之外的其他视图,_UILayoutGuide并且您知道要从UIView中删除的特定类型的子视图,则可以将删除的子视图限制为这些类型,例如:

for subview in view.subviews {
    if subview is ULabel {
        println(subview)
        subview.removeFromSuperview()
    }
}
Run Code Online (Sandbox Code Playgroud)


Joe*_*ell 10

一种选择是为您添加特定标记的所有视图.然后只有他们有那个标签才能删除它们.

userCreatedView.tag = 100;
Run Code Online (Sandbox Code Playgroud)

...

for subview in view.subviews {
    if (subview.tag == 100) {
        subview.removeFromSuperview()
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以保留用户添加的所有子视图的数组,然后检查该子视图是否在您的userAddedViewsArray中

或者,您可以为用户添加的视图创建UIView的子类,然后只删除该类的子视图