iOS tableView 自定义单选cell 和多选cell

单选的效果大概就是这样,如果想设置右边的accessoryType属性,更改对应的UITableViewCellAccessoryType参数即可。

iOS tableView 自定义单选cell 和多选cell_第1张图片

1.先定义一个NSIndexPath 用于保存最后一次选中的组行

NSIndexPath * _lastSelectIndexPath;

2.cell的代理方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;{

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

if(cell == nil){

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

cell.backgroundColor = [UIColor whiteColor];

cell.textLabel.font = [UIFont systemFontOfSize:12];

}

if([_lastSelectIndexPath isEqual:indexPath]){

//设置选中图片

cell.imageView.image = [UIImage imageNamed:@"icon_ssselected"];

}else {

//设置未选中图片

cell.imageView.image = [UIImage imageNamed:@"icon_unselected"];

}

cell.textLabel.text = [NSString stringWithFormat:@"Cell%ld",indexPath.row];

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;{

UITableViewCell * lastSelectCell = [tableView cellForRowAtIndexPath: _lastSelectIndexPath];

if (lastSelectCell != nil) {

lastSelectCell.imageView.image = [UIImage imageNamed:@"icon_unselected"];

}

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell.imageView.image = [UIImage imageNamed:@"icon_ssselected"];

_lastSelectIndexPath = indexPath;

}

多选,其实和单选差不多,只是将用于保存最后一次选中的NSIndexPath 换成数组就行了

iOS tableView 自定义单选cell 和多选cell_第2张图片

1.定义一个数组用于保存选中的NSIndexPath 

NSMutableArray * _selectArr;

数组记得初始化

2.cell的代理方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;{

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

if(cell == nil){

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

cell.backgroundColor = [UIColor whiteColor];

cell.textLabel.font = [UIFont systemFontOfSize:12];

}

if([_selectArr containsObject:indexPath]){

//设置选中图片

cell.imageView.image = [UIImage imageNamed:@"icon_ssselected"];

}else {

//设置未选中图片

cell.imageView.image = [UIImage imageNamed:@"icon_unselected"];

}

cell.textLabel.text = [NSString stringWithFormat:@"Cell%ld",indexPath.row];

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;{

UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];

if([_selectArr containsObject:indexPath]){

[_selectArr removeObject:indexPath];

cell.imageView.image = [UIImage imageNamed:@"icon_unselected"];

}else {

[_selectArr addObject:indexPath];

cell.imageView.image = [UIImage imageNamed:@"icon_ssselected"];

}

}

你可能感兴趣的:(iOS tableView 自定义单选cell 和多选cell)