美文网首页
iOS中UITableView的编辑状态多选

iOS中UITableView的编辑状态多选

作者: LanWor | 来源:发表于2017-01-25 16:56 被阅读603次

    开发工作中经常遇到列表编辑多选功能,UITableView其实自带的有多选功能,使用起来方便,不需要自己做选中状态,效果:


    效果图

    获取多选cell的位置信息:

    - (NSArray*)indexPathsForSelectedRows;

    在  didSelectRowAtIndexPath:方法里获取并打印选中cell的位置信息:

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

    NSArray*selectCells = [tableView indexPathsForSelectedRows];

    NSLog(@"------%@",selectCells);

    }

    打印结果:

    2017-01-25 16:21:15.088 cocopodsText[655:17134] ------(

    " {length = 2, path = 0 - 2}",

    " {length = 2, path = 0 - 4}",

    " {length = 2, path = 0 - 7}",

    " {length = 2, path = 0 - 10}",

    " {length = 2, path = 0 - 8}",

    " {length = 2, path = 0 - 6}"

    )

    数组结果里是按照选中的顺序存储的数据。

    接下来先说说全选和全不选的操作,以下都是在单section情况下:

    全选:

    遍历一遍数据源 然后选中每一条:

    //全选按钮事件

    - (void)allSelectAction:(UIButton*)sender {

    [self.dataSource enumerateObjectsUsingBlock:^(id_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {

    [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:idx inSection:0]animated:NOscrollPosition:UITableViewScrollPositionNone];

    }];

    }

    全选

    全不选:

    全不选,reload就可以变为全不选状态了,如果不想reload这样简单粗暴的,也可以取出当前选中的indexpath数组,遍历反选也可以。

    //全不选按钮事件

    - (void)allUnSelectAction:(UIButton*)sender {

    [[self.tableView indexPathsForSelectedRows]enumerateObjectsUsingBlock:^(NSIndexPath*_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {

    [self.tableView deselectRowAtIndexPath:objanimated:NO];

    }];

    }

    取消所有选中

    引用文章:www.jianshu.com/p/a6e4cb42dd03

    UITableView相关方法使用详细介绍:

    blog.csdn.net/baidu_33298752/article/details/50675125

    相关文章

      网友评论

          本文标题:iOS中UITableView的编辑状态多选

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