Comment accéder à tous les UIButtons dans un UIScrollView dans un UIView?

J'utilise ce qui suit pour essayer d'accéder à tous les UIButtons situés à l'intérieur d'un UIScrollView dans un UIView. Le problème est que le code ne semble pas localiser les buttons et définir la propriété border.

UIView -> UIScrollView -> UIButtons.

Je veux essentiellement faire une boucle sur les buttons et définir la propriété de la bordure.

for(UIView *v in [self.viewLightLeakChoices subviews]) { if([v isKindOfClass:[UIButton class]]) { v.layer.borderWidth = 0; } } 

Essayez celui-ci à la place

 for (id obj in scrollView.subviews) { NSSsortingng *classStr = NSSsortingngFromClass([obj class]); if ([classStr isEqualToSsortingng:@"UIButton"]) { UIButton *button = (UIButton*)obj; button.layer.borderWidth = 2.0; button.layer.borderColor = [UIColor greenColor].CGColor; } } 

sortie

entrez la description de l'image ici

assurez-vous d'abord que vous obtenez des sous-vues de UIScrollView parce que votre structure est

UIView> UIScrollView> UIButton

Si vous avez seulement 1 vue self.viewLightLeakChoices dans self.viewLightLeakChoices alors définissez votre tag scrollview = 1000 et accédez directement à votre scrollview, maintenant vous n'avez plus besoin d'utiliser loop. et l'exécution sera rapide.

 UIScrollView *scrlV = [self.viewLightLeakChoices viewWithTag:1000]; for (UIButton *btn in scrlV.subviews) { if ([btn isKindOfClass:[UIButton Class]]) { btn.layer.borderWidth = 1.0; btn.layer.borderColor = [UIColor whiteColor].CGColor; } } 

Je suis incapable d'get je m'attends à ce que vous ayez scrollview -> uiview -> button

  for(UIView *myview in Scrollview.subviews) { for ( id mybutton in myview.subviews) { if ([mybutton isKindOfClass:[UIButton class]]) { UIButton *mybtn=(UIButton *)mybutton; mybtn.layer.borderWidth=0; } } } 

Merci pour l'aide les gars. J'ai fini par faire un tas de loops for pour descendre aux UIButtons.

 for(UIView *v in [self.viewLightLeakChoices subviews]) { if([v isKindOfClass:[UIScrollView class]]) { for(UIView *subView in [v subviews]) { for(UIButton *btn in [subView subviews]) { btn.layer.borderWidth = 0; } } } } 

Vous devriez avoir créé la class Button dire que MyButton étend UIButton, si vous faites cela, il n'est pas nécessaire de faire une boucle dans les sous-vues de scrollview.

mettre en œuvre la méthode awakeFromNib et appliquer la bordure, pour appliquer la bordure, reportez-vous à cet article. SO Comment créer une bordure dans UIButton?