• UITableView整理


    基本介绍

     UITableView在 iOS 开发中可以说是使用最广泛的控件,它有两种风格:UITableViewStylePlainUITableViewStyleGrouped。这两者操作起来其实并没有本质区别,只是后者按分组样式显示前者按照普通样式显示而已。

    在UITableView中数据只有行的概念,并没有列的概念,每行数据都是一个UITableViewCell,其内部有一个UIView控件(contentView,作为其他元素的父控件)、两个UILable控件(textLabel、detailTextLabel)、一个UIImage控件(imageView),分别用于容器、显示内容、详情和图片。

    UITableViewCell提供有四种样式,分别为

    UITableViewCellStyleDefault
    左侧显示textLabel(不显示detailTextLabel),imageView可选(显示在最左边)

    UITableViewCellStyleValue1

    左侧显示textLabel、右侧显示detailTextLabel(默认蓝色),imageView可选(显示在最左边)

    UITableViewCellStyleValue2

    左侧依次显示textLabel(默认蓝色)和detailTextLabel,imageView可选(显示在最左边)

    UITableViewCellStyleSubtitle

    左上方显示textLabel,左下方显示detailTextLabel(默认灰色),imageView可选(显示在最左边)

    UITableView需要实现UITableViewDataSource和UITableViewDelegate 协议,来实现和外界数据和操作的交互。

    数据源

    UITableViewDataSource共有三类方法:

    (1)配置表视图

    这类方法用来计算 section 和 cell 的数量、section 索引等,以及设置表视图中的 cell视图、header/footer 的标题。

    根据数据源方法生成单元格的顺序是:计算分组数——计算每组行数——生成分组索引——生成单元格

    生成单元格的方法并不是一次全部调用,而是只会生产当前显示在界面上的单元格,当用户滚动操作时再显示其他单元格

    (2)插入或修改行

    设置是否可以编辑指定的行,以及设置相应行的编辑样式。

    (3)重新排序

    设置能否移动指定的行,以及确定将要移动到的位置。

    代理

    UITableViewDelegate共有九类方法:

    (1)设置表视图的行

    包括设置行高、预计的行高、行缩进,以及在即将显示行前要进行的绘制工作。

    (2)管理Accessory Views

    包括设置editActions(表格行侧滑可以执行的操作)、accessoryButton点击事件的处理。

    (3)管理表格行的选择

    包括willSelect(将要选中)、didSelect(已经选中)、willDeselect(将要放弃选中)、didDeslect(放弃选中)四种状态,可以设置在选择的不同状态,进行不同的操作。

    (4)修改 section 的 header 和 footer

    包括设置 header 和 footer 的高度、预计高度、视图,以及将要显示时执行的操作。

    (5)编辑表视图的行

    包括willBeginEditing(将要开始编辑)和 didEndEditing(结束编辑)两种状态,以及设置行的编辑样式、删除确认按钮的标题、在编辑时是否缩进。

    (6)排序

    这个方法和数据源方法中的那个的不同之处在于:它返回的是目标位置的 indexPath

    (7)追踪视图的移除

    包括设置结束 cell、header 和 footer 显示后执行的操作三种。

    (8)行内容的复制粘贴

    包括是否显示编辑菜单(默认不显示)、是否执行动作和实行哪种操作三种。

    (9)行的高亮显示

    包括shouldHighlight、didHighlight和didUnhighlight三种。

    (10)focus

    包括能否突出显示某行、应该更新突出显示、已更新显示某行、突出显示的行的 indexPath 四种。

    性能优化

    在UITableView内部有一个缓存池,初始化时使用initWithStyle:(UITableViewCellStyle) reuseIdentifier:(NSString *)方法指定一个可重用标识,就可以将这个cell放到缓存池。然后在使用时使用指定的标识去缓存池中取得对应的cell然后修改cell内容即可。

    UITableViewCell

    UITableViewCell是构建一个UITableView的基础,在UITableViewCell内部有一个UIView控件作为其他内容的容器,它上面有一个UIImageView和两个UILabel,通过UITableViewCellStyle属性可以对其样式进行控制。其结构如下:

    UITableViewCellStuct

    有时候我们会发现很多UITableViewCell右侧可以显示不同的图标,在iOS中称之为访问器,点击可以触发不同的事件,例如设置功能:

    UITableViewCellAccesoryType

  • 相关阅读:
    WriteFile函数
    良好的动态内存申请与释放
    只需一条命令,快速在Windows 10上关闭Linux
    盘点程序员过年最怕被问的问题:薪资问题首当其冲,对象问题紧追其后
    程序员为什么是吃青春饭,而不是像医生律师一样越老越值钱?
    Linux网络配置的三种方法,手把手教你,一看就会!
    应届程序员VS往届程序员:当面对HR和领导时,此时的内心活动是这样的...
    MySql数据在磁盘上到底是怎么存储的?被存储的数据怎么查找?
    如何写出高质量的代码?优秀的程序员都是这样做的
    哼!MySQL 8.0不讲武德,给我挖坑!
  • 原文地址:https://www.cnblogs.com/xiayao/p/5276480.html
Copyright © 2020-2023  润新知