Je pensais que quelque chose comme ça pourrait fonctionner:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Je souhaite supprimer tout type de sous-vue. UIImages, boutons, champs de texte, etc.
Je pensais que quelque chose comme ça pourrait fonctionner:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
Je souhaite supprimer tout type de sous-vue. UIImages, boutons, champs de texte, etc.
b
cela serait rapidement supprimé du subviews
tableau, provoquant une mutation dans une boucle d'énumération rapide, ce qui est interdit.
copy
spécificateur signifie qu'il effectue une copie lorsqu'il est défini ; rien n'est spécifié sur l'obtention. Il est fort probable qu'une copie soit renvoyée, mais cela ne fait pas partie de la définition de la propriété.
Réponses:
[self.view.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
C'est identique à votre variante, mais légèrement plus courte.
Vous pouvez utiliser comme ça
//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()
}
vue est la vue dont vous souhaitez tout supprimer. vous supprimez simplement chaque sous-vue en faisant forEach
Pour Swift 4 + .Vous pouvez faire une extension à UIView
. Appelez-le chaque fois que nécessaire.
extension UIView {
func removeAllSubviews() {
subviews.forEach { $0.removeFromSuperview() }
}
}