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.
bcela serait rapidement supprimé du subviewstableau, provoquant une mutation dans une boucle d'énumération rapide, ce qui est interdit.
copyspé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() }
}
}