首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift中删除视图的所有子视图?

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

Stack Overflow用户
提问于 2014-06-20 01:26:23
回答 22查看 171.2K关注 0票数 206

我正在寻找一种简单的方法来立即从superview中删除所有的子视图,而不是逐个删除它们。

代码语言:javascript
复制
//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)

我猜苹果把它修好了。

现在它比以往任何时候都更容易,只需调用:

代码语言:javascript
复制
for view in containerView.subviews{
    view.removeFromSuperview()
}
EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2014-07-10 09:13:41

编辑:(谢谢Jeremiah / Rollo)

到目前为止,在Swift for iOS中做到这一点的最好方法是:

代码语言:javascript
复制
view.subviews.forEach({ $0.removeFromSuperview() }) // this gets things done
view.subviews.map({ $0.removeFromSuperview() }) // this returns modified array

^^这些功能很有趣!

代码语言:javascript
复制
let funTimes = ["Awesome","Crazy","WTF"]
extension String { 
    func readIt() {
        print(self)
    }
}

funTimes.forEach({ $0.readIt() })

/结束编辑

只需执行以下操作:

代码语言:javascript
复制
for view in self.view.subviews {
    view.removeFromSuperview()
}

或者如果您正在寻找特定的类

代码语言:javascript
复制
for view:CustomViewClass! in self.view.subviews {
        if view.isKindOfClass(CustomViewClass) {
            view.doClassThing()
        }
    }
票数 390
EN

Stack Overflow用户

发布于 2015-02-14 21:43:11

对于iOS/Swift,要删除我使用的所有子视图:

代码语言:javascript
复制
for v in view.subviews{
   v.removeFromSuperview()
}

为了摆脱特定类(如UILabel)的所有子视图,我使用:

代码语言:javascript
复制
for v in view.subviews{
   if v is UILabel{
      v.removeFromSuperview()
   }
}
票数 44
EN

Stack Overflow用户

发布于 2015-11-24 15:15:00

代码可以写得更简单,如下所示。

代码语言:javascript
复制
view.subviews.forEach { $0.removeFromSuperview() }
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24312760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档