iOS 细节大集合iOS技术

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

2017-08-06  本文已影响469人  假想控

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

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 换成数组就行了

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"];

}

}

上一篇下一篇

猜你喜欢

热点阅读