从self.view中删除所有子视图的最佳方法是什么?

时间:2012-08-09 17:55:50

标签: iphone objective-c ios uikit

我在想也许这样的事可能有用:

    for (UIView* b in self.view.subviews)
    {
       [b removeFromSuperview];
    }

我想删除所有类型的子视图。 UIImages,按钮,文本域等。

5 个答案:

答案 0 :(得分:243)

[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];

它与您的变体相同,但稍短。

答案 1 :(得分:16)

self.view.subviews.forEach({ $0.removeFromSuperview() })

Swift中的相同版本。

答案 2 :(得分:6)

夫特:

extension UIView {
    func removeAllSubviews() {
        for subview in subviews {
            subview.removeFromSuperview()
        }
    }
}

答案 3 :(得分:1)

你可以这样使用

//adding an object to the view
view.addSubView(UIButton())

// you can remove any UIControls you have added with this code
view.subviews.forEach { (item) in
     item.removeFromSuperview()
}

view是要从中删除所有内容的视图。你只是通过forEach

删除每个子视图

答案 4 :(得分:0)

对于Swift 4+。您可以扩展UIView。必要时调用它。

extension UIView {
    func removeAllSubviews() {
        subviews.forEach { $0.removeFromSuperview() }
    }
}
相关问题