因为我们的App有商品兑换这一机制,故我们必须要有一个邮寄地址管理的页面,就在刚才自己简单的写了下实现单选和复选的问题,其实有两种方法,这里先给大家说下其中一种方法。
在我们做选择时,必须在每次点击时记录cell的indexPath;
下面给大家看下我的实现方法:
单选:
先定义一个变量,记录每次点击的cell:
@property (assign, nonatomic) NSIndexPath *selIndex;//单选,当前选中的行
接着在tableView的点击代理方法中实现代码
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
AddressTableViewCell *celld = [tableView cellForRowAtIndexPath:_selIndex];
celld.select_Ima.image = [UIImage imageNamed:@"未选"];
celld.givenAddress.textColor = GZ_RGB(102, 102, 102);
//记录当前选中的位置索引
_selIndex = indexPath;
//当前选择的打勾
AddressTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.select_Ima.image = [UIImage imageNamed:@"sele"];
cell.givenAddress.textColor = GZ_RGB(227, 47, 73);
[self.AddressTableView reloadData];
}
最后,一般来说在地址管理中会有多个地址,因此我们必须要考虑到cell复用的问题,所以我们需要判断
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
AddressTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Address"];
if (!cell) {
cell = [[AddressTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Address"];
}
__weak typeof(self) weakSelf = self;
__block AddressTableViewCell * weakCell = cell;
[cell useCellFrameCacheWithIndexPath:indexPath tableView:tableView];
cell.delegate = self ;
cell.selectionStyle = GZTableViewCellStyle ;
cell.name.text = [NSString stringWithFormat:@"轻斟浅醉17%ld",(long)indexPath.row];
cell.phone.text = @"12345678987";
cell.address.text = @"陕西省西安市高新区坦言公馆1433";
if (_selIndex == 0 && indexPath.row == 0) {
weakCell.select_Ima.image = [UIImage imageNamed:@"sele"];
weakCell.givenAddress.textColor = GZ_RGB(227, 47, 73);
}
//当上下滑动时因为cell复用,需要判断哪个选择了
else if (_selIndex == indexPath) {
weakCell.select_Ima.image = [UIImage imageNamed:@"sele"];
weakCell.givenAddress.textColor = GZ_RGB(227, 47, 73);
}else{
weakCell.select_Ima.image = [UIImage imageNamed:@"未选"];
weakCell.givenAddress.textColor = GZ_RGB(102, 102, 102);
}
cell.AddressCellMoreButtonBlock = ^(NSInteger tag){
if(tag == 1111){
NewAddressVC *new = [[NewAddressVC alloc]init];
[self.navigationController pushViewController:new animated:YES];
}else{
[weakSelf.view gz_showHUD:@"删除地址" hide:1];
}
};
return cell ;
}
多选:
先定义一个数组,记录每次点击的cell:
@property (assign, nonatomic) NSMutableArray *selIndexs;//多选,当前选中的行
初始化一下数组
_selIndexs = [NSMutableArray new];
接着在代理方法中实现代码
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//获取到点击的cell
AddressTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { //如果为选中状态
cell.accessoryType = UITableViewCellAccessoryNone; //切换为未选中
[_selIndexs removeObject:indexPath]; //数据移除
}else { //未选中
cell.accessoryType = UITableViewCellAccessoryCheckmark; //切换为选中
[_selIndexs addObject:indexPath]; //添加索引数据到数组
}
}
最后再数据方法中处理
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
AddressTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Address"];
if (!cell) {
cell = [[AddressTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Address"];
}
__weak typeof(self) weakSelf = self;
__block AddressTableViewCell * weakCell = cell;
[cell useCellFrameCacheWithIndexPath:indexPath tableView:tableView];
cell.delegate = self ;
cell.selectionStyle = GZTableViewCellStyle ;
cell.name.text = [NSString stringWithFormat:@"轻斟浅醉17%ld",(long)indexPath.row];
cell.phone.text = @"12345678987";
cell.address.text = @"陕西省西安市高新区坦言公馆1433";
cell.accessoryType = UITableViewCellAccessoryNone;
for( NSIndexPath *index in _selIndexs){
if(index == indexPath)
cell.select_Ima.image = [UIImage imageNamed:@"sele"];
cell.givenAddress.textColor = GZ_RGB(227, 47, 73);
}
cell.AddressCellMoreButtonBlock = ^(NSInteger tag){
if(tag == 1111){
NewAddressVC *new = [[NewAddressVC alloc]init];
[self.navigationController pushViewController:new animated:YES];
}else{
[weakSelf.view gz_showHUD:@"删除地址" hide:1];
}
};
return cell ;
}
帮助到了小伙伴可以点个赞,我这里也做了地址编辑和删除功能,如果有需要的可以联系我QQ群号:237573715 欢迎您的加入。