2014-09-11 299 views
0

我的CustomTableCell上有四個按鈕。 按鈕名,button1button2button3button4。 (在.h文件中聲明)如何以編程方式生成按鈕名稱按鈕

@property (weak, nonatomic) IBOutlet UIButton *button1; 
@property (weak, nonatomic) IBOutlet UIButton *button2; 
@property (weak, nonatomic) IBOutlet UIButton *button3; 
@property (weak, nonatomic) IBOutlet UIButton *button4; 

以下代碼正常工作,並且通過重複代碼生成4個像這樣的按鈕。

CustomTableViewCell *cell = [self.tableVIew dequeueReusableCellWithIdentifier:@"CustomCell"]; 
[cell.button1.titleLabel setFont:[UIFont systemFontOfSize:13]]; 
cell.button1.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
cell.button1.titleLabel.textAlignment = NSTextAlignmentLeft; 
cell.button1.titleLabel.numberOfLines = 0; 
[cell.button1 setTitle:@"button1 title" forState:UIControlStateNormal]; 
[cell.button1 setSelected:NO]; 

現在我使用的四個按鈕將有四個不同的名稱(不是標題)ceated陣列。

_buttonTitle = [@[@"button1 title", 
        @"button2 title", 
        @"button3 title", 
        @"button4 title"] mutableCopy]; 

所以我想爲什麼不在這樣的for循環中生成按鈕。

for (int i = 0; i <= _buttonTitle.count ; i++) { 
     NSString *buttonNumber = [NSString stringWithFormat:@"%d", i+1]; 
     NSString *buttonName = [@"button" stringByAppendingString:buttonNumber]; 
     [cell.buttonName.titleLabel setFont:[UIFont systemFontOfSize:13]]; 
     cell.buttonName.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
     cell.buttonName.titleLabel.textAlignment = NSTextAlignmentLeft; 
     cell.buttonName.titleLabel.numberOfLines = 0; 
//  NSLog(buttonName); 
     [cell.buttonName setTitle:_buttonTitle[i] forState:UIControlStateNormal]; 
     [cell.buttonName setSelected:NO]; 
    } 

我收到以下錯誤:當然

"Property 'buttonName' not found on object of type 'CustomTableViewCell *'" 

,這是有道理的cell.button1 != cell.buttonName eventhough buttonNameNSString與價值button1

於是,我問的是這個問題,我怎麼可以創建一個按鈕,如果我知道在.h文件中聲明的按鈕名稱的要點?

回答

0

buttonName是不是一個按鈕,它是一個串。

嘗試設置tag爲每個按鈕,像標籤0按鈕1,按鈕2與標籤1等。你可以將它設置在您的視圖界面(的.xib文件)

,然後更新您的代碼下面,它應該工作:

for (int i = 0; i <= _buttonTitle.count ; i++) { 
    NSString *buttonNumber = [NSString stringWithFormat:@"%d", i+1]; 
    //I removed this 
    //NSString *buttonName = [@"button" stringByAppendingString:buttonNumber]; 
    //I added this 
    UIButton* currentButton = (UIButton*)[cell viewWithTag:i]; 

    [currentButton.titleLabel setFont:[UIFont systemFontOfSize:13]]; 
    currentButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    currentButton.titleLabel.textAlignment = NSTextAlignmentLeft; 
    currentButton.titleLabel.numberOfLines = 0; 
    //  NSLog(buttonName); 
    [currentButton setTitle:_buttonTitle[i] forState:UIControlStateNormal]; 
    [currentButton setSelected:NO]; 
} 
2

你想知道如何以編程方式創建按鈕嗎?如果是這樣的:

UIButton *btn = [[UIButton alloc] init]; 
[btn setTitle:@"YOUR TITLE" forState:UIControlStateNormal]; 

如果你正在尋找設置一個按鈕的標題和標題存儲在數組中,你可以做這樣的事情:

UIButton *btn = [[UIButton alloc] init]; 
[btn setTitle:[NSString stringWithFormat:@"%@", [self.yourButtonTitleArray objectAtIndex:index]] forState:UIControlStateNormal]; 
0

考慮你正在努力實現我建議使用運行什麼如果要驗證按鈕的數量,則創建實時屬性。有關詳細信息,請參閱此Question。但是,如果您只有這四個按鈕可以顯示在單元格中,請不要嘗試任何花哨的東西。在第一種方法中使用靜態屬性聲明是完全可以的。