web-dev-qa-db-ja.com

self.viewからすべてのサブビューを削除する最良の方法は何ですか?

私はこのような何かがうまくいくかもしれないと考えていました:

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

あらゆる種類のサブビューを削除したい。 UIImage、ボタン、テキストフィールドなど.

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

バリアントと同じですが、少し短くなっています。

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

Swiftの同一バージョン。

17
lcl

迅速:

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

このように使用できます

//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を実行してすべてのサブビューを削除するだけです

1
spikee

Swift 4+。の場合、UIViewの拡張子を作成できます。必要に応じて呼び出します。

extension UIView {
    func removeAllSubviews() {
        subviews.forEach { $0.removeFromSuperview() }
    }
}
0
ishwardgret