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
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?