如何以编程方式生成按钮名称按钮
问题描述:
我的CustomTableCell上有四个按钮。 按钮名,button1
,button2
,button3
,button4
。 (在.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 buttonName
是NSString
与价值button1
。
于是,我问的是这个问题,我怎么可以创建一个按钮,如果我知道在.h文件中声明的按钮名称的要点?
答
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];
}
答
你想知道如何以编程方式创建按钮吗?如果是这样的:
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];
答
考虑你正在努力实现我建议使用运行什么如果要验证按钮的数量,则创建实时属性。有关详细信息,请参阅此Question。但是,如果您只有这四个按钮可以显示在单元格中,请不要尝试任何花哨的东西。在第一种方法中使用静态属性声明是完全可以的。