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的子类,然后只删除该类的子视图