iOS UITableView单行选中和多行选中

1、单行选中

近期所做的项目其中一个界面效果图如下所示:


效果图

设计给出的需求文档上的说明是,点击列表中任意一行,其他行都收回,如果再点击一次该行,则所有行收回。好了需求明确,当然这个界面首选用UITableView来实现,整个效果就是用UITableView的单行选中来实现的,当选中该行时,该行的高度改变。

实现单行选中的思路是:

(1)、定义一个整数CellRow来记录上一次点击的行数,并在viewDidLoad方法中将值设为-1;


代码

(2)、在UITableView的didSelectRowAtIndexPath回调方法中赋值,完成后刷新UITableVIew;


代码

(3)、考虑到再点击一次需要收回,所有应该做出判断,当前点击行数和上一次点击行数相等时,把CellRow的值设为默认值,所以最终UItableView的didSelectRowAtIndexPath回调方法中的代码为:


代码

(4)、在UITableView的heightForRowAtIndexPath回调方法中判断,UITableView点击的行数的高度刷新其他的行数不改变。


代码

OK,整体的思路就是如此,最终我做出来的效果入下图所示:

2、多行选中

(1)、在获取到数据后,对数据源数组进行一次遍历,在数据源数组的每个元素都增加一个属性isShow用来记录UITableView对应的行是否选中,该属性默认值为0表示对应的行数没有选中,如果等于1则对应的行数表示选中,此处我使用了MJExtension框架将获取到的数据转换为Model;


Model

(2)、当点击时可以获取到点击的行数,对数据源数组中对应行数的isShow属性值做修改,同时刷新UITableView 所点击的行数;


(3)、在UITableView的返回高度heightForRowAtIndexPath回调方法中做出判断;

以上是UITableView多行选中的思路,由于这是公司的项目不能提供代码了,我写了个Demo供参考,请戳这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容