UITableView多选Cell操作

先新建一个项目,命名为UITableViewDemo,storyboard中拖入一个UITableViewController,然后新建一个继承自UITableViewController的类,命名为UDTableViewController。在storyboard中将拖入的UITableViewController的Custom Class,Class设置为刚刚新建的UDTableViewController。

定义一个复用标识

当前tableview注册UITableViewCell类并设置复用标识为上面的标识

采用复用的cell,并设置显示内容

现在看起来是这个样子:

1180922-3d940ec37495aa6b

正常状态
1280922-0f65ff8c05359e29

编辑状态

现在怎么让UITableView编辑时为多选呢?

那就是实现UITableView的代理方法

UITableViewCellEditingStyle为编辑状态, 声明如下:

而多选就是UITableViewCellEditingStyleDelete、UITableViewCellEditingStyleInsert两者的组合。

所以返回状态如下:

现在可以多选了,效果图:

1380922-fd919da3b8f5442b

多选

下面的方法为提交编辑时响应的方法,比如:删除状态下点击cell右边的删除按钮时;插入状态下点击左侧添加按钮时。编辑状态下并不会调用此方法,所以只能取其它的办法。

怎么保存多选的row呢?

如果要保存多选的row,我有一个方法(如果你有更好的方法,请告诉我😄):

— 将需要返回的UITableViewCellEditingStyle 声明为全局变量currentEditingStyle(可以在一个UITableView中轻松切换、处理不同编辑状态)。

— 实现2个代理方法:didSelectRowAtIndexPath:和didDeselectRowAtIndexPath:

声明一个用于保存row的可变数组multipleSelectedRows并初始化。多选状态下选中某cell时,didSelectRowAtIndexPath:中区分是否是多选状态:

如果是,则将选中row添加到multipleSelectedRows中。

didDeselectRowAtIndexPath:方法同理,先区分是否多选状态,如果是,并且multipleSelectedRows中存在的row和deselectrow相同则移出数组。

扩展:

1、如果将

改为

会发现,多选按钮不见了。你可以自己添加自定义多选按钮!

1 5 收藏 评论

可能感兴趣的话题



直接登录
跳到底部
返回顶部