我正在寻找一个简单的方法,从一个超级视图一次删除所有的子视图,而不是一个一个地删除。
- //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 – 工作解决方案(OS X)
我猜苹果固定它。
现在它比以往更容易,只需调用:
- for view in containerView.subviews{
- view.removeFromSuperview()
- }
编辑:(感谢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() })
//// END EDIT
只要这样做:
- for view in self.view.subviews {
- view.removeFromSuperview()
- }
或者如果你正在寻找一个特定的类
- for view:CustomViewClass! in self.view.subviews {
- if view.isKindOfClass(CustomViewClass) {
- view.doClassThing()
- }
- }