创建一组UIButtons?

时间:2014-09-29 22:42:51

标签: ios objective-c uibutton

我有一个包含35个相同按钮(黑色背景和灰色边框)的项目,它们位于另一个旁边(第一行中有5个,底部还有五个,填满了我的整个iphone屏幕)。

我的方法是:

    button1.layer.borderWidth = 1.0f;
    button1.layer.borderColor = [[UIColor grayColor] CGColor];

    button2.layer.borderWidth = 1.0f;
    button2.layer.borderColor = [[UIColor grayColor] CGColor];

    button3.layer.borderWidth = 1.0f;
    button3.layer.borderColor = [[UIColor grayColor] CGColor];

    ....

    button35.layer.borderWidth = 1.0f;
    button35.layer.borderColor = [[UIColor grayColor] CGColor];

想象一下,重复了多少行代码,对我而言并不意味着好事,在这种情况下我想知道如何最小化它?可以将所有按钮组合在一起吗?

3 个答案:

答案 0 :(得分:2)

创建一个..

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttonCollection;

并将所有按钮连接到此。

然后在您的用户界面中定义您的属性(截图是我的按钮,所以按您的意愿设置属性)

enter image description here

或者在viewDidLoad

中使用this..put将你的buttonCollection循环
for(UIButton *button in buttonCollection){
            //capture frame
            button.layer.borderWidth = 1.0f;
            button.layer.borderColor = [[UIColor grayColor] CGColor];
}

答案 1 :(得分:1)

这可能不是最好的方法,但想法是UIButton继承自UIView。

因此,您可以通过使用按钮查找视图的子视图来获取按钮数组。

在数组上使用快速枚举来检查类是否为UIButton并进行更改。

NSArray * arr = _myView.subviews;

    for (UIView * button in arr) {
        NSLog(@" button %@",  button);
        if ([button isKindOfClass:[UIButton class]]) {
            // UIButton* thisButton =button;
            button.layer.borderWidth = 1.0f;
            button.layer.borderColor = [[UIColor grayColor] CGColor];
        }
    }

我的快速测试在这里工作。

但正如我所说,我不能说这样做是不是一个好主意。如果有陷阱,希望评论会教育我。

答案 2 :(得分:0)

带有数组样本的循环

是这样的:

NSArray *keyPadImage=[[NSArray alloc]initWithObjects:@"keypad1-3.1.png",@"keypad2-3.1.png",@"keypad3-3.1.png",@"keypad4-3.1.png",@"keypad5-3.1.png",@"keypad6-3.1.png",@"keypad7-3.1.png",@"keypad8-3.1.png",@"keypad9-3.1.png",@"keypad-dot-3.1.png",@"keypad0-3.1.png",@"keypad-x-3.1.png",nil];

int height;
int count = [keyPadImage count];
for(int i=0;i<count;i++)
{
    height=i/3;
    UIButton *keyPad=[[UIButton alloc]initWithFrame:CGRectMake(15+(i%3)*92, 72+(height*75), 89, 72)];
    [keyPad setBackgroundImage:[UIImage imageNamed:[keyPadImage objectAtIndex:i]] forState:UIControlStateNormal];
    [keyPad addTarget:self action:@selector(modifyTotalAmount:) forControlEvents:UIControlEventTouchUpInside];

    [keyPad setTag:(i+1)];

    [self.view addSubview:keyPad];
}

由于