2010-06-17 6 views
13

J'ai une application iPhone qui utilise une minuterie et à chaque intervalle de temps il crée des contrôles UILabel et les ajoute dans un UIScrollView. Ce que je veux faire est d'effacer le UIScrollView chaque intervalle de temps avant qu'il place les UILabel contrôles dans le UIScrollView.Effacer le contenu de UIScrollView

Comment effacer le contenu du UIScrollView?

Répondre

45
for (UIView *subview in scrollView.subviews) { 
    [subview removeFromSuperview]; 
} 
+21

ou en une ligne: [scrollView.s ubviews makeObjectsPerformSelector: @selector (removeFromSuperview)]; – Vladimir

+0

Merci Graham, ça a très bien fonctionné pour moi. Merci beaucoup .... – Joy

+0

@Vladimir: bon. –

15

Vous allez également supprimer la barre de défilement avec le above solution. Pour résoudre ce problème, vous pouvez demander si la sous-vue sur le point d'être supprimée est une instance UIImageView. Évidemment, vous devrez faire plus de vérifications si vous avez votre propre UIImageViews dans la vue déroulante.

for (UIView *subview in scrollView.subviews) { 
    if(![subview isKindOfClass:[UIImageView class]]) 
    [subview removeFromSuperview]; 
} 
0

Son très simple suffit d'écrire ce code dans votre boucle où la structure dynamique est la création et le changement de son contenu fréquemment.

[subview removeFromSuperview]; 
1

Je vais généralement avec un un revêtement comme ceci: au cas où vous êtes intéressé ..

while(scrollView.subviews.count > 0) [[scrollView.subviews objectAtIndex:0] removeFromSuperview]; 
0

Dans une ligne

[_ui_scroll.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
0

SWIFT:

for subview in self.scrollView.subviews 
     { 
      subview.removeFromSuperview() 
     } 
Questions connexes