88

我在想也许这样的事情可能会奏效:

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

我想删除各种子视图。UIImages,按钮,文本字段等。

4

5 回答 5

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

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

于 2012-08-09T17:59:39.720 回答
23
self.view.subviews.forEach({ $0.removeFromSuperview() })

Swift 中的相同版本。

于 2016-02-22T02:52:48.960 回答
7

迅速:

extension UIView {
    func removeAllSubviews() {
        for subview in subviews {
            subview.removeFromSuperview()
        }
    }
}
于 2015-09-08T16:47:48.627 回答
3

你可以这样使用

//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 删除每个子视图

于 2016-09-09T01:13:12.097 回答
0

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

extension UIView {
    func removeAllSubviews() {
        subviews.forEach { $0.removeFromSuperview() }
    }
}
于 2018-12-26T03:37:27.337 回答