删除除命名的所有子视图

Posted

技术标签:

【中文标题】删除除命名的所有子视图【英文标题】:Remove all subviews except named 【发布时间】:2014-12-31 23:59:41 【问题描述】:

我想删除我的 UIViewController 的所有子视图,除了两个名为 toolBarOnetoolBarTwo 的子视图。我不确定我应该从哪里开始。你的建议是什么?谢谢。

【问题讨论】:

【参考方案1】:

出于几个原因,我不会完全按照索尼建议的方式去做。

    通过这种方式,您将删除子视图,同时使用相同的子视图数组进行枚举。

    您可能还删除了与布局相关的子视图,即 UILayoutGuide,您没有明确添加到视图中。

相反,我建议迭代一个单独的数组,其中包含原始 self.view.subviews 数组的副本,并排除 UILayoutSupport 类型的任何子视图:

var subviews = self.view.subviews
for subview in subviews as [UIView] 
    if subview != toolBarOne && subview != toolBarTwo && !(subview is UILayoutSupport) 
        subview.removeFromSuperview()
    

【讨论】:

【参考方案2】:
    for subView in view.subviews as [UIView] 
        if subView != toolBarOne && subView != toolBarTwo 
            subView.removeFromSuperview()
        
    

【讨论】:

以上是关于删除除命名的所有子视图的主要内容,如果未能解决你的问题,请参考以下文章

删除 cell.contentview 上的所有子视图,标签除外

修改除一个之外的所有子视图

多选模式下的 UITableView 删除选定单元格中所有子视图的背景颜色

iOS一行代码将所有子视图从父视图上移除

如何删除子视图(或视图的所有子视图)

在框架外点击时移除视图