Я думав, можливо щось подібне може спрацювати:
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() }
}
}