UITableView整理

基本介绍缓存

 UITableView在 iOS 开发中能够说是使用最普遍的控件,它有两种风格:UITableViewStylePlainUITableViewStyleGrouped。这二者操做起来其实并无本质区别,只是后者按分组样式显示前者按照普通样式显示而已。性能优化

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

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

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

UITableViewCellStyleValue1代理

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

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

相关文章
相关标签/搜索