美文网首页iOS 开发
iOS UITableView单行选中和多行选中

iOS UITableView单行选中和多行选中

作者: 小時間光 | 来源:发表于2016-05-04 16:29 被阅读1182次

    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供参考,请戳这里

    相关文章

      网友评论

        本文标题:iOS UITableView单行选中和多行选中

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