UITbaleView上按钮的单选(转载)
UITbaleView上按钮的单选
设置Id属性,标记是哪个cell
@property (nonatomic,assign)NSInteger Id;
设置一个普通状态和选中状态图片不同的按钮
_choose = [[UIButton alloc]init];
[_choose setImage:[UIImage imageNamed:@"about_未勾选"] forState:UIControlStateNormal];
[_choose setImage:[UIImage imageNamed:@"about_勾选"] forState:UIControlStateSelected];
[_choose addTarget:self action:@selector(choosePressed:) forControlEvents:UIControlEventTouchUpInside];
[self.contentView addSubview:_choose];
- (void)layoutSubviews {
_choose.frame = CGRectMake(10, 120+wei_tiao, 20, 20);
}
设置一个可调整选中或者为选中的方法
- (void)setChecked:(BOOL)checked {
if (checked) {
_choose.selected = YES;
}else {
_choose.selected = NO;
}
}
cell上按钮的单击事件
/**
* 选择勾选
*
* @param sender 按钮
*/
- (void)choosePressed:(UIButton *)sender {
sender.selected = YES;
if (_chooseBlock) {
_chooseBlock(self.Id);
}
}
设置一个全局变量来判定点了哪一个cell
NSInteger _cellIndex;
tableView代理:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ShippingAddressCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.Id = indexPath.row;
if (_cellIndex == indexPath.row) {
[cell setChecked:YES];
}else {
[cell setChecked:NO];
}
[cell setChooseBlock:^(NSInteger index) {
_cellIndex = index;
[_tableView reloadData];
}];
return cell;
}
效果图:
补:使用了block作为属性回调
1.申明block属性
@property (copy, nonatomic) void(^chooseBlock)(NSInteger index);
2.在本类里面调用
if (_chooseBlock) {
_chooseBlock(self.Id);
}
3.使用block属性:
[cell setChooseBlock:^(NSInteger index) {
_cellIndex = index;
[_tableView reloadData];
}];

浙公网安备 33010602011771号