我正在寻找一种简单的方法,可以一次从一个超级视图中删除所有子视图,而不是一个一个地删除它们。
//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) }
我缺少什么?
更新
我的应用有一个main container_view。我必须添加其他不同的视图作为子视图container_view,以便提供一种导航。
container_view
因此,当单击按钮“打开”特定页面时,我需要删除所有子视图并添加新的子视图。
更新2-可行的解决方案(OS X)
我猜苹果已经解决了。
现在,它比以往更容易了,只需致电:
for view in containerView.subviews{ view.removeFromSuperview() }
编辑:(感谢耶利米/罗洛)
到目前为止,在iOS的Swift中做到这一点的最佳方法是:
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() } }