简介
UITableView是iOS开发中使用较为频繁的视图。在很多地方都用到了它来展示数据,比如微信通讯录和新闻列表等。
在UITableView中,分节、分组和索引等功能让我们展示的数据更加规整,更有条理。
1.概述
本节将主要介绍UITableView中的概念、相关类、表视图分类、单元格组成和样式,以及表视图的两个协议——UITableViewDelegate委托和UITableViewDataSource数据源。
1.1 UITableView的组成
1. table header view: UITableView最上边的视图,用于展示表视图信息,例如表视图刷新信息
2. table footer view: UITableView最下边的视图,也用于展示表视图信息,例如表视图分页时显示”更多”等信息
3. cell: 它是组成表视图每一行的单位视图
4. section:由多个cell组成,由section header和section footer
section header: 描述section的信息,文字左对齐
section footer: 也可描述section的信息和声明,文字左对齐
1.2 UITableView相关类
1. UITableView继承自UIScrollView,且有两个协议,UITableViewDelegate委托协议和UITableViewDataSource数据源协议。
2. 并且包含很多其他的类,UITableViewCell类用于为cell提供视图
3. UITableController类是UITableView控制器
4. UITableViewHeaderFooterView类用于为section header和section footer提供视图
1.3 UITableView分类
iOS中的UITableView主要分为Plain(普通视图)和Grouped(分组视图)
1. Plain:主要用于动态表,动态表一般在单元格数目未知的情况下使用
2. Grouped:一般用于静态表,用于界面布局,将UITableView分成很多section,而section又由一些类似的cell组成
1.4 cell的组成和样式
cell由图标、标题和扩展视图等组成
单元格的样式我们也可以根据需要进行选择,图标、标题和副标题可以有选择地设置、扩展视图可以内置或者自定义
内置的扩展视图是在枚举类型UITableViewCellAccessoryType中定义的,如下表所示
| Objective-C枚举成员 | 说明 |
|---|---|
| UITableViewCellAccessoryNone | 无扩展图标 |
| UITableViewCellAccessoryDisclosureIndicator | 扩展指示器,触摸该图标将切换到下一级UITableView,图标为> |
| UITableViewCellAccessoryDetailDisclosureButton | 细节展示按钮,触摸该cell时,UITableView会以View的方式先手当前单元格的更多详细信息,图标为! |
| UITableViewCellAccessoryCheckmark | 选中标志,表示该行被选中,图标为√ |
iOS API提供的cell样式是在枚举类型UITableViewCellStyle中定义的,如下表所示
| Objective-C枚举成员 | 说明 |
|---|---|
| UITableViewCellStyleDefault | 默认样式,只有图标和主标题 |
| UITableViewCellStyleSubtitle | Subtitle样式,有图标、主标题和副标题,副标题在主标题下面 |
| UITableViewCellStyleValue1 | Value1样式,有主标题和副标题,主标题左对齐,副标题右对齐,可以有图标 |
| UITableViewCellStyleValue2 | Value2样式,有主标题和副标题,主标题和副标题居中对齐,无图标 |
1.5数据源协议与委托协议
1.UITableViewDataSource协议主要用来为UITableView提供数据,设置section个数,cell个数,section的header标题和footer标题等,必须实现以下两个方法
| 方法 | 返回类型 | 说明 |
|---|---|---|
| tableView:numberOfRowsInSection: | Int | 返回某个节中的行数 |
| tableView:cellForRowAtIndexPath | UITableViewCell | 为cell提供数据 |
2. UITableViewDelegate协议主要用来设置sction的header和footer标题,响应动作事件