iOS中UITableView的编辑状态多选

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


iOS中UITableView的编辑状态多选_第1张图片
效果图

获取多选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];

}];

}


iOS中UITableView的编辑状态多选_第2张图片
全选

全不选:

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

//全不选按钮事件

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

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

[self.tableView deselectRowAtIndexPath:objanimated:NO];

}];

}


iOS中UITableView的编辑状态多选_第3张图片
取消所有选中

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

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

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

你可能感兴趣的:(iOS中UITableView的编辑状态多选)