TableView(表示图)
在iOS中,表示图是使用频率相当高的一个控件, 我们会常用到表示图来进行一些布局.
第一种情况:我们在视图控制器中创建表示图
在视图控制器中创建表示图我们必须要实现两个方法:
一: 表示图的数据源.(需要遵守UITableViewDataSource协议)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section//表示图数据源协议必须要实现的协议方法, 由代理对象为表示图提供行数 (行数一般与表示图要展示的数据的个数一致)
二: 表示图的单元格定义.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableView *aTableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];//创建一个TableView,TableView有两种形式, 一种是分组(grouped), 还有一种是不分组的(Plain).
aTableView.separatorColor = [UIColor grayColor];//调用separatorColor属性可以设置分割线的颜色.
aTableView.rowHeight = 60;//调用rowHeight属性可以设置表示图单元格的统一行高.
aTableView.dataSource = self;//设置表示图的数据源代理对象
我们生成多少表格, 就有多少表格, 但是如果我们需要的表格数量大得时候呢? 难道我们要生成很多表格么? 那样会占用到很多的系统资源, 然而这并不是我们想要的, 我们做的是iOS的开发, 所以要尽量减少资源的占用. 我们使用重用机制来做.
什么是重用机制?
重用机制其实也就是重复的利用. 比如商场里的电梯, 车站候车厅的座位. 可以反复利用当前空闲的位置.
在定义单元格的方法中我们制作重用单元格
五步:
一:定义静态重用标示符
//1.定义静态重用标示符
static NSString *identifier = @"CELL";
//2.根据重用标示符从表示图的重用队列中获取可被重用的单元格
UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:identifier];
//3.如果重用队列里并无可被重用单元格, 则创建单元格对象 (常见于表示图刚开始布局单元格时, 这时并没有产生重用)
if (!aCell) {
aCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
}
//4.为单元格提供要显示的数据
aCell.textLabel.text = self.datasource[indexPath.row];//重新赋值
//5.返回单元格
return aCell;
在有空闲的可重用单元格时, 并不会销毁单元格里的数据, 而是在有需要的数据使用时, 直接给重用单元格赋值.UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:@"CELL" forIndexPath:indexPath];
如果使用这种格式的话需要在ViewDidLoad里为重用标示符指定单元格的类型
[aTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"CELL"];