引语:
表视图是用于向用户显示数据列表的一种最常见的机制. 它们是高度可配置的对象,可以被配置成用户所需的任何形式.
1.表视图基础
- 表用于显示数据列表.数据列表中的每项都由表中的行表示.iOS没有限制行数,甚至可以只有一列.表视图是显示表数据的视图对象,它是UItableView的一个实例. 表中的每一个可见行都由UITableViewCell实现.
- 表视图并不存储表数据,它们只存储足够绘制当前可见行的数据.表视图从遵循<UITableViewDelegate>协议的对象获取配置数据,从遵循<UITableViewDataSource>的对象获取行数据.
- 所有的表都只有一列,但是可以使用图一个图像,一些文本和一个可选的辅助图标来配置每一个UITableViewCell对象,使其显示成我们想要的形式.
- 可以向UITableViewCell添加子视图,从而在一个单元中放置更多的数据.有两种方法来实现此操作,一种方法是在创建单元的事后通过代码添加子视图,另一种方法是从nib文件加载它们.
- 表视图有两种基本形式:分组表和无格式表. 分组表中的每个组都由嵌入圆角矩形的多个行组成.一个分组表也可以只包含一个组. 无格式表即为默认的样式,使用索引的情况下又可以称为索引表.
2.表相关的协议
<UITableViewDataSource>协议的方法是必须要实现,<UITableViewDelegate>协议则可以选择是否 实现.
<UITableViewDataSource>的主要方法如下:
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section表使用它来查看指定分区有多少行.-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath表视图需要绘制其中的一行时,会调用此方法. 表视图正是通过这种机制把分区和行绑定到一个对象中的.
<UITableViewDelegate>的主要方法如下:-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath: (NSIndexPath *)indexPath可以指定缩进某些行.-(NSINdexPath *)tableView: (UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath)indexPath在表的某些行被选中前会被调用-(NSINdexPath *)tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath)indexPath
在表中的某些行被选中之后会被调用-(CGFloat)tabelView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath)indexPath可以指定某一行的高度