美文网首页iOS 细节大集合iOS技术
iOS tableView 自定义单选cell 和多选cell

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

作者: 假想控 | 来源:发表于2017-08-06 01:10 被阅读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"];

    }

    }

    相关文章

      网友评论

        本文标题:iOS tableView 自定义单选cell 和多选cell

        本文链接:https://www.haomeiwen.com/subject/ecwjrttx.html