Fondamentalement, je veux supprimer tous les objets d'un UIScrollView et je n'ai pas encore trouvé de solution car une simple commande "removeAllObjects" ne fonctionne pas. Est-ce que quelqu'un a une idée de comment le faire?iPhone: Comment supprimer tous les objets d'un UIScrollView
Répondre
Encore plus facile:
[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
Je suppose que vous avez le même problème avec 'makeObjectsPerformSelector' en ce qui concerne la boucle à travers les sous-vues tout en modifiant le tableau simultanément. cette façon est élégante et utilisée par beaucoup, mais comment adressez-vous ce programme qui a été mentionné ci-dessus? – iwasrobbed
Je suis à peu près sûr que makeObjectsPerformSelector: génère un tableau temporaire avant d'appeler le sélecteur sur chaque objet. Si ce n'était pas le cas, comme vous le dites, cela causerait des problèmes. – Kalle
La façon la plus simple:
for(UIView *subview in [scrollView subviews]) {
[subview removeFromSuperview];
}
Est-il prudent de modifier le contenu du tableau tout en faisant une boucle à travers les éléments? Je me demandais juste ... – progrmr
En général ce n'est probablement pas la meilleure pratique, donc vous pouvez vouloir mettre en place un tableau temporaire marqué pour la suppression. : P – iwasrobbed
Il est certainement sûr d'enlever les sous-vues en énumérant la collection de sous-vues des parents – ohhorob
Deux solutions seraient, sans enlever les barres de défilement:
Ajouter un tag à tous vos sous-vues, retirez-les en utilisant ces tags.
Mise en œuvre:
Placez ce au-dessus de votre classe
#define XPScrollViewSubviewStartTag 100
Lorsque vous ajoutez les objets
for(NSInteger = 0;i<[viewArray count];i++){
UIView* view = [viewArray objectAtIndex:i];
view.tag = XPScrollViewSubviewStartTag + i;
[scrollView addSubview:view];
}
Si vous voulez plus tard supprimer les vues utilisent
for(UIView* view in [scrollView subviews]){
if(view.tag >= XPScrollViewSubviewStartTag)
[view removeFromSuperview];
}
Créer une classe UIView personnalisée
Lorsque vous voulez supprimer les vues
for(id view in [scrollView subviews]){
if(![view isKindOfClass:[CustomView class]])
continue;
//not necessary, but just to make things understandable
CustomView* customView = (CustomView*)view;
[customView removeFromSuperview];
}
solution de Oritm est agréable, mais si vous ne voulez pas vous embêter en utilisant les balises, vous pouvez supprimer manuellement qui vous vues souhaitez supprimer de la scrollview. Cela supposera que vous savez quelle vue à supprimer. Par exemple, mon scrollview a seulement UILabels quand j'exécutez la commande suivante:
// This will remove the scrollview but the scrollbars will remain
for (UIView *subview in [self.detailsExpander.scrollView subviews]) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UILabel"])
[subview removeFromSuperview];
}
Cela ne supprime toutes les étiquettes, mais garder les barres de défilement (qui sont des vues d'image). Remarque: cela ne fonctionnera pas si vous souhaitez conserver des vues d'images spécifiques tout en conservant les barres de défilement.
- 1. supprimer tous les objets de réseau NSMutable
- 2. iPhone + UIScrollView
- 3. Supprimer toutes les sous-vues d'un UIScrollView?
- 4. UIScrollView images cliquables iPhone
- 5. comment supprimer des objets particuliers de tableau sdk iphone
- 6. iPhone SDK - UIScrollView & UIPageControl
- 7. comment supprimer les gros objets dans postgres
- 8. iphone UIScrollView positionnement inversé
- 9. Comment supprimer tous les caractères d'une chaîne
- 10. Comment supprimer tous les sujets dans ActiveMQ?
- 11. Comment supprimer tous les travaux de l'imprimante
- 12. Comment supprimer VRAIMENT une branche git (c'est-à-dire supprimer tous ses objets/commits)?
- 13. iPhone UIScrollView - comment obtenir un titre d'image
- 14. Cocoa-Touch, Core Data: Comment supprimer tous les objets pour une entité?
- 15. Comment supprimer tous les objets flash de html avec regex, le code nécessaire à C#
- 16. InvalidOperationException avec supprimer les objets connexes
- 17. iphone sdk: UIScrollView as Image
- 18. iPhone UIScrollView, ralentir le défilement
- 19. ajouter dynamiquement UITextField dans le UIScrollView dans iphone
- 20. Conseils sur iPhone Horizental UIScrollView
- 21. Comment supprimer tous les éléments d'un NSTableView contrôlé par NSArrayController?
- 22. Déplacer tous les objets de mon tableau?
- 23. ToolStripDropDownButton, comment supprimer tous DropDownItems?
- 24. Empêcher fullcalendar d'accepter tous les objets "droppable"
- 25. Trouver tous les objets avec l'association brisée
- 26. Récupérer tous les objets d'un contrôleur NSTree
- 27. Grails: supprime tous les objets associés
- 28. Supprimer tous les enregistrements d'une table
- 29. Comment puis-je créer une galerie d'images UIScrollView? (SDK iPhone)
- 30. Supprimer tous les enregistrements dans NSManagedObjectContext
Ne supprimez pas toutes les sous-vues d'un 'UISubview'. Ses vues d'indicateur de défilement sont des sous-vues. Vous allez les enlever aussi. Je recommande de placer vos vues de contenu dans votre propre conteneur UIView. (Gardez-le comme un ivar pour un accès facile tout en ajoutant et en supprimant) – ohhorob