2014-11-20 3 views
1

Я использую следующее, чтобы попытаться получить доступ ко всем UIButtons, расположенным внутри UIScrollView в UIView. Проблема в том, что код, похоже, не находит кнопки и устанавливает свойство border.Как получить доступ ко всем UIButtons в UIScrollView в UIView?

UIView -> UIScrollView -> UIButtons.

Я в основном хочу прокрутить кнопки и установить свойство border.

for(UIView *v in [self.viewLightLeakChoices subviews]) { 

    if([v isKindOfClass:[UIButton class]]) { 

     v.layer.borderWidth = 0; 

    } 

} 
+0

Ваш код работает отлично с Xcode 6.1 и целевой SDK 7.1 – Ammar

+1

'viewLightLeakChoices' является' 'UIScrollView' или UIView'? –

+0

вы уверены, что достигли uibutton – Smile

ответ

1

Спасибо за помощь, ребята. Я закончил тем, что сделал кучу циклов, чтобы перейти к 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; 

      } 

     } 

    } 

} 
+1

Но я думал, что у вас только один UIScrollView ...? Если это так, вы можете просто заменить [subviews self.viewLightLeakChoices] на [self.yourScrollView subviews] в вашем исходном коде. –

+0

Если у вас есть только один scrollview, то назначьте тег scrollview и получите доступ непосредственно с тегом. поэтому теперь не использовать для 'for (UIView * v in [self.viewLightLeakChoices subviews])' и использовать как 'UIScrollView * scrlV = [viewLightLeakChoices viewWithTag: 1000];' устанавливать тег как вы хотите. И после этого 'for (UIButton * subView в [scrlV subviews]) ' –

+0

Ознакомьтесь с моим обновленным ответом. –

2

Попробуйте это вместо

for (id obj in scrollView.subviews) { 

    NSString *classStr = NSStringFromClass([obj class]); 

    if ([classStr isEqualToString:@"UIButton"]) { 
     UIButton *button = (UIButton*)obj; 
     button.layer.borderWidth = 2.0; 
     button.layer.borderColor = [UIColor greenColor].CGColor; 
    } 
} 

выход

enter image description here

0

я смог я жду вас возникли Scrollview -> UIView -> кнопка

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; 
     } 
    } 
} 
-1

Вы должны создать класс Button, который говорит, что MyButton расширяет UIButton, если вы это делаете, нет необходимости перебирать подпрограммы scrollview.

реализовать метод awakeFromNib и применить границу, чтобы применить границы передать этот SO сообщение How to create border in UIButton?

1

сначала убедитесь, что вы получаете подвидов из UIScrollView, потому что ваша структура

UIView> UIScrollView> UIButton

если у вас есть только 1 просмотр прокрутки в self.viewLightLeakChoices, а затем установите свой scrollview tag = 1000 и получите прямой доступ к вашему прокрутку, поэтому теперь вам не нужно использовать цикл. и выполнение будет быстрым.

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; 
    } 
} 
Смежные вопросы