如何在Swift中删除视图的所有子视图?

Alberto Bellini:

我正在寻找一种简单的方法,可以一次从一个超级视图中删除所有子视图,而不是一个一个地删除它们。

//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_viewcontainer_view为了提供某种导航,我必须添加其他不同的视图作为子视图

因此,当单击按钮以“打开”特定页面时,我需要删除所有子视图并添加新的子视图。

更新2-可行的解决方案(OS X)

我猜苹果已经解决了。

现在,它比以往更容易了,只需致电:

for view in containerView.subviews{
    view.removeFromSuperview()
}
Bseaborn:

编辑:(感谢耶利米/罗洛)

到目前为止,在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()
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章