一个IBAction多个按钮和标签

时间:2012-09-02 20:45:53

标签: objective-c xcode

我有一个标签,两个按钮。标签中的一到+1和一到-1。

我使用以下代码:

·H

    int counter;

    IBOutlet UILabel *count;
}

-(IBAction)plus:(id)sender;
-(IBAction)minus:(id)sender;

的.m

-(IBAction)plus {

    counter=counter + 1;

    count.text = [NSString stringWithFormat:@"%i",counter];

}

-(IBAction)minus {

    counter=counter - 1;

    count.text = [NSString stringWithFormat:@"%i",counter];

}

这两个按钮链接到IB中的标签(计数)。 现在问我的问题。如果我想拥有更多这样的按钮和标签,我该怎么做? 我知道我可以复制代码并将它们重新链接到IB中,但这需要很长时间。 当按钮链接到计数标签时,它不能只在IB中复制它们,按钮可以工作,但它会计算第一个标签。我需要统计每个标签。

那么,我怎么能这样做并节省时间?它会有很多。

1 个答案:

答案 0 :(得分:0)

您可以按顺序生成按钮,将它们存储在NSArray中,并对标签执行相同操作。然后,您可以使用数组中的索引来关联它们。

// Assuming a view controller
@interface MyVC: UIViewController {
    NSMutableArray *buttons;
    NSMutableArray *labels;
}

// in some initialization method
buttons = [[NSMutableArray alloc] init];
labels = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfButtonsAndLabels; i++) {
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    // configure the button, then
    [self.view addSubview:btn];
    [buttons addObject:btn];

    UILabel *lbl = [[UILabel alloc] initWithFrame:aFrame];
    // configure the label, then
    [self.view addSubview:lbl];
    [labels addObject:lbl];
    [lbl release];
}

- (void)buttonClicked:(UIButton *)sender
{
    NSUInteger index = [buttons indexOfObject:sender];
    UILabel *label = [labels objectAtIndex:index];

    // use index, sender and label to do something
}