我正在寻找一种简单的方法来立即从superview中删除所有的子视图,而不是逐个删除它们。
//I'm trying something like this, but is not working
let theSubviews : Array = container_view.subviews
for (view : NSView) in theSubviews {
view.removeFromSuperview(container_view)
}
我错过了什么?
更新
我的应用程序有一个主container_view
。我必须将不同的其他视图作为子视图添加到container_view
中,以便提供某种导航。
因此,当单击该按钮以“打开”特定页面时,我需要删除所有子视图并添加新的子视图。
更新2-A工作解决方案(OS X)
我猜苹果把它修好了。
现在它比以往任何时候都更容易,只需调用:
for view in containerView.subviews{
view.removeFromSuperview()
}
发布于 2014-07-10 09:13:41
编辑:(谢谢Jeremiah / Rollo)
到目前为止,在Swift for iOS中做到这一点的最好方法是:
view.subviews.forEach({ $0.removeFromSuperview() }) // this gets things done
view.subviews.map({ $0.removeFromSuperview() }) // this returns modified array
^^这些功能很有趣!
let funTimes = ["Awesome","Crazy","WTF"]
extension String {
func readIt() {
print(self)
}
}
funTimes.forEach({ $0.readIt() })
/结束编辑
只需执行以下操作:
for view in self.view.subviews {
view.removeFromSuperview()
}
或者如果您正在寻找特定的类
for view:CustomViewClass! in self.view.subviews {
if view.isKindOfClass(CustomViewClass) {
view.doClassThing()
}
}
发布于 2015-02-14 21:43:11
对于iOS/Swift,要删除我使用的所有子视图:
for v in view.subviews{
v.removeFromSuperview()
}
为了摆脱特定类(如UILabel)的所有子视图,我使用:
for v in view.subviews{
if v is UILabel{
v.removeFromSuperview()
}
}
发布于 2015-11-24 15:15:00
代码可以写得更简单,如下所示。
view.subviews.forEach { $0.removeFromSuperview() }
https://stackoverflow.com/questions/24312760
复制相似问题