(十二)UITableView的基本使用
UITableView之所以支持滚动,是因为继承自UIScrollView。默认是垂直滚动,性能极佳。
UITableView的两种样式:
1.UITableViewStylePlain 例如通讯录的视图。
2.UITableViewStyleGrouped 分组样式,例如微信的发现视图。
如何在TableView上显示数据:
需要通过一个数据源(dataSource)来展示数据。UITableView会向数据源发送消息查询一共有多少行数据以及每一行显示什么内容。
第一步:遵循数据源的protocol,并且设置tableView的数据源为自身:
可以通过拖线绑定dataSource,也可以通过self.tableView.dataSource=self;设定TableView的数据源为控制器。
@interface ViewController () <UITableViewDataSource>
self.tableView.dataSource = self;第二步:重写protocol中规定的一些方法,来告诉TableView分几组,每组显示多少数据,以及在对应的组和行显示什么样的数据。
在TableView中,用section表示组,row表示行,这两个数据合起来称为indexPath,从而实现定位。
1. numberOfSectionsInTableView: 方法用来返回一共显示多少个section(多少组)。
2. tableView: numberOfRowsInSection: 方法用来返回相应的section有多少行(传入参数section,传出参数row)。
3 .tableView: cellForRowAtIndexPath: 方法用来返回相应行的一个数据Cell,Cell即为一行的内容,传入参数indexPath可以唯一确定当前的位置。
调用顺序:先调用1知道组数section,然后调用2一共section次知道每一组有多少数据,最后调用section*对应的组的行数次的3得到每一行应该显示的内容。
Tip:为了分组显示,要将TableView的Style设置成Group类型。
为了协调表格中数据的多样性,一般用模型来存储数据。
设置TableView的头部标题(概括这一组所讲的内容)和尾部标题(用来详细描述这一组怎么用):
使用方法:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ //根据section返回相应的头标题 } - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{ //根据section返回相应的尾标题 }