我在自定义TableViewCell中有三个按钮,即B0,B1和B2,我设置了三个按钮颜色为蓝色。
在导航栏中有用于增加单元格编号的添加按钮,当您点击该添加按钮时,单元格编号将增加并且tableview将重新加载。
默认情况下numberOfRowsInSection
返回1并默认选中按钮" B0"是绿色。
现在,如果您选择B1,它将变为绿色,剩下的两个将变为蓝色,如果您选择B2,则B2将变为绿色,反之亦然。
但是当您通过单击导航栏中的“添加”按钮来增加单元格数时,单元格1中的三个按钮显示蓝色,而单元格0中的三个按钮显示为我们在增加之前设置的。如下图所示:
我无法想到这样的逻辑,即在添加单元格之前如何制作单元格0。
在每个单元格中,每个单元格按钮必须在那里被选为单选按钮,而我无法实现这一点。
这是我的代码。
#import "ViewController.h"
#import "TableViewCell.h"
@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>{
IBOutlet UITableView *tableViewTest;
int rows;
int selectedTag;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
rows = 1;
tableViewTest.delegate = self;
tableViewTest.dataSource = self;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return rows;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
TableViewCell *cell = (TableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"TableViewCell"];
if (indexPath.row == 0) {
cell.btnB0.tag = indexPath.row;
cell.btnB1.tag = indexPath.row+1;
cell.btnB2.tag = indexPath.row+2;
}
else{
cell.btnB0.tag = indexPath.row*3;
cell.btnB1.tag = indexPath.row*3+1;
cell.btnB2.tag = indexPath.row*3+2;
}
cell.btnB0.backgroundColor = [UIColor blueColor];
cell.btnB1.backgroundColor = [UIColor blueColor];
cell.btnB2.backgroundColor = [UIColor blueColor];
if (cell.btnB0.tag == selectedTag) {
cell.btnB0.backgroundColor = [UIColor greenColor];
cell.btnB1.backgroundColor = [UIColor blueColor];
cell.btnB2.backgroundColor = [UIColor blueColor];
}
else if (cell.btnB1.tag == selectedTag) {
cell.btnB0.backgroundColor = [UIColor blueColor];
cell.btnB1.backgroundColor = [UIColor greenColor];
cell.btnB2.backgroundColor = [UIColor blueColor];
}
else if (cell.btnB2.tag == selectedTag) {
cell.btnB0.backgroundColor = [UIColor blueColor];
cell.btnB1.backgroundColor = [UIColor blueColor];
cell.btnB2.backgroundColor = [UIColor greenColor];
}
[cell.btnB0 addTarget:self action:@selector(cellRadioButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[cell.btnB1 addTarget:self action:@selector(cellRadioButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[cell.btnB2 addTarget:self action:@selector(cellRadioButtonAction:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
-(void)cellRadioButtonAction: (UIButton *)sender{
NSLog(@"%d",(int)sender.tag);
selectedTag = (int)sender.tag;
[tableViewTest reloadData];
}
- (IBAction)barBtnAddCell:(id)sender {
rows++;
[tableViewTest reloadData];
}
@end
任何帮助都会很明显。 感谢。