自定义UITableViewCell中的多个按钮

时间:2017-04-10 08:51:52

标签: ios objective-c iphone uitableview xcode8

我在自定义TableViewCell中有三个按钮,即B0,B1和B2,我设置了三个按钮颜色为蓝色。 在导航栏中有用于增加单元格编号的添加按钮,当您点击该添加按钮时,单元格编号将增加并且tableview将重新加载。 默认情况下numberOfRowsInSection返回1并默认选中按钮" B0"是绿色。

现在,如果您选择B1,它将变为绿色,剩下的两个将变为蓝色,如果您选择B2,则B2将变为绿色,反之亦然。

但是当您通过单击导航栏中的“添加”按钮来增加单元格数时,单元格1中的三个按钮显示蓝色,而单元格0中的三个按钮显示为我们在增加之前设置的。如下图所示:

enter image description here

enter image description here

enter image description here

enter image description here

我无法想到这样的逻辑,即在添加单元格之前如何制作单元格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

任何帮助都会很明显。 感谢。

0 个答案:

没有答案