美文网首页
UIKit中的常用控件(三):UITableView

UIKit中的常用控件(三):UITableView

作者: Coulson_Wang | 来源:发表于2017-06-07 00:52 被阅读0次

    本篇博客主要介绍UITableView这个极度重要、使用最广泛的UI控件


    一、设置数据源

    • 为tableView的dataSource设置数据源,通常将控制器设为数据源
    • 数据源需要遵守UITableViewDataSource协议
    • 实现以下数据源方法
    • numberOfSectionsInTableView: 返回组的个数(可选,默认为1)
    • tableView: numberOfRowsInSection: 返回每个组的行数
    • tableView: cellForRowAtIndexPath: 在这个方法中配置每一行的数据
    • tableView: titleForHeaderInSection:设置分组的头部标题
    • tableView: titleForFooterInSection:设置分组的尾部标题

    二、UITableView的常见属性

    • rowHeight 行高。默认为44

    • sectionHeaderHeight/sectionFooterHeight 组头部/尾部的高度

    • separatorColor 分割线颜色

    • separatorStyle 分割线的样式

    • SingleLine 默认样式,单行

    • SingleLineEtched 与上面那个一样,但仅支持在grouped样式的tableView中显示

    • None 无分割线

    • tableHeaderView/tableFooterView 整个tableView的头部或尾部控件

    </br>

    三、UITableViewCell的常见属性

    • contentView 子控件,其包含了textLabel、imageView、detailTextLabel三个子控件
    • accessoryType 右侧按钮类型
    • accessoryView 右侧视图(优先级较高,设置后会覆盖掉右侧按钮)
    • selectionStyle 选中样式
    • backgroundColor 背景颜色
    • backgroundView 背景View
    • selectedBackgroundView 选中时的背景View

    </br>

    四、UITableViewCell的代理

    • 为tableView的delegate设置代理,通常将控制器设为代理
    • 代理对象需要遵守UITableViewDelegate协议
    • 实现以下代理方法
    • tableView: didSelectRowAtIndexPath: 监听用户选中了某一行
    • tableView: didDeselectRowAtIndexPath: 监听用户取消了某一行的选中

    </br>

    五、UITableView的性能优化

    Apple的优化策略:
    1. 懒加载,只有需要显示的行,才创建对应的cell
    2. 循环利用。离开tableView的cell暂时放到缓存池中,需要显示的新的cell先尝试从缓存池中
    实现方式:
    • tableView: cellForRowAtIndexPath:方法中,对tableView调用dequeueReusableCellWithIdentifier:方法,尝试在缓存池中取一个唯一标识符与参数一致的tableViewCell
    • 未取到可用的cell,则调用initWithStyle: reuseIdentifier:方法创建一个新的cell。需要在参数中传入一个唯一标识符,便于后续取出cell来重用
    • 也可以在viewDidLoad方法中调用registerClass:forCellReuseIdentifier:方法来注册一个重用cell标识。这样当缓存池没有可用的cell时,会自动创建cell
    tips:
    • 类似于backgroundColor这样的一次性设置(每一行都一样且始终不变),可以放到if语句中,提高性能。

    </br>

    六、实现索引条

    • 实现sectionIndexTitlesForTableView:方法,创建一个表示索引条的数组并返回。
    • 通过sectionIndexColor属性可以设置索引条中的文字颜色
    • 用过sectionIndexBackgroundColor属性可以设置索引条的背景颜色

    </br>

    </br>

    七、自定义Cell

    自动计算行高的方法:

    • 设置rowHeight属性为UITableViewAutomaticDimension
    • 设置一个估算高度estimatedRowHeight

    </br>

    八、数据刷新

    1.全局刷新

    修改数据源中模型的数据,再对tableView调用reloadData方法即可

    2.局部刷新

    调用reloadRowsAtIndexPaths:withRowAnimation:方法,可以指定刷新指定索引位置的数据,并设定刷新时的动画形式

    3.添加数据时的局部刷新

    添加数据时,调用insertRowsAtIndexPaths:withRowAnimation:方法,即可在指定位置处播放cell增加的动画

    4.删除数据时的局部刷新

    删除数据时,调用deleteRowsAtIndexPaths:withRowAnimation:方法,即可在指定位置处播放cell增加的动画

    </br>

    九、左滑删除

    1. 设置代理
    2. 实现协议中的tableView: commitEditingStyle: forRowAtIndexPath:即可实现左滑删除,并在方法中删除掉模型中的数据、调用删除动画方法。
    3. 修改左滑删除按钮的文字
      实现协议中的tableView:titleForDeleteConfirmationButtonForRowAtIndexPath:方法,返回一个字符串,即可修改删除按钮中的文本

    </br>

    十、左滑出现多个按钮

    实现协议中的tableView:editActionsForRowAtIndexPath:方法,返回一个包含了所有按钮的数组即可

    • 通过UITableViewRowAction的类方法rowActionWithStyle:title:handler:方法创建即可创建一个按钮,并在handler这个block类型的参数中设置点击时触发的操作即可

    </br>

    十一、编辑模式

    • 修改tableView的editing属性为YES即可直接进入编辑模式
    • 调用setEditing:animated:方法也可进入编辑模式,参数传入YES则有动画

    十二、编辑模式下多选

    设置tableView的allowsMutipleSelectionDuringEditing属性为YES,即可在进入编辑模式时允许多选。
    调用tableView的indexPathsForSelectedRows方法可以获取到用户在编辑模式下所选中的所有Cell的索引

    相关文章

      网友评论

          本文标题:UIKit中的常用控件(三):UITableView

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