如何在UIView中访问UIScrollView中的所有UIButton?

时间:2014-11-20 12:43:44

标签: ios objective-c uiview

我正在使用以下内容尝试访问位于UIView内的UIScrollView内的所有UIButton。问题是代码似乎没有找到按钮并设置border属性。

UIView - > UIScrollView - > UIButtons。

我基本上想要遍历按钮并设置border属性。

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

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

        v.layer.borderWidth = 0;

    }

}

5 个答案:

答案 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

答案 1 :(得分:1)

首先确保您获得UIScrollView的子视图,因为您的结构是

UIView>的UIScrollView>的UIButton

如果self.viewLightLeakChoices中只有1个滚动视图,那么设置你的scrollview标签= 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;
    }
}

答案 2 :(得分:1)

感谢帮助人员。我最终做了一堆for循环来开始使用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;

            }

        }

    }

}

答案 3 :(得分:0)

我无法理解我期待你有滚动视图 - > 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;
        }
    }
}

答案 4 :(得分:-1)

你应该创建Button类,说MyButton扩展UIButton,如果这样做,就不需要遍历scrollview的子视图。

实现awakeFromNib方法并应用border,要应用border请参阅此SO帖子How to create border in UIButton?