2012-09-02 96 views
0

我有一個標籤,兩個按鈕。一個是+1,另一個是標籤-1。一個IBAction多個按鈕和標籤

我用下面的代碼:

.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中複製它們,按鈕可以工作,但它會計算第一個標籤。我需要統計每個標籤。

那麼,我該如何做到這一點,節省時間?它會是很多這些。

回答

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 
} 
+0

謝謝你的回答。即時通訊新的這個,並想知道我把這個代碼?在他們中?粘貼此代碼時出現很多錯誤。 – Kallen

+0

@Kallen當然在.m文件中。並且不要複製粘貼 - 這是一個例子,而不是1:1的工作代碼。 – 2012-09-03 04:30:20