it-swarm.com.ru

Каков наилучший способ удалить все подпредставления из вашего self.view?

Я думал, может быть, что-то вроде этого может работать:

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

Я хочу удалить все виды подпредставлений. UIImages, кнопки, текстовые поля и т.д.

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

Он идентичен вашему варианту, но немного короче.

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

Идентичная версия в Swift.

16
lcl

Swift:

extension UIView {
    func removeAllSubviews() {
        for subview in subviews {
            subview.removeFromSuperview()
        }
    }
}
6
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