Я думал, может сработать что-то вроде этого:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Я хочу удалить все виды подвидов. UIImages, кнопки, текстовые поля и т. Д.
Я думал, может сработать что-то вроде этого:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Я хочу удалить все виды подвидов. UIImages, кнопки, текстовые поля и т. Д.
b
это будет немедленно удалено из subviews
массива, что вызовет мутацию в быстром цикле перебора, что запрещено.
copy
означает, что он делает копию, когда установлен ; о получении ничего не указано. Вполне вероятно, что будет возвращена копия, но это не часть определения свойства.
Ответы:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
Он идентичен вашему варианту, но немного короче.
Вы можете использовать это так
//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
Для Swift 4+ можно сделать расширение UIView
. Звоните при необходимости.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}