tableView在开发中扮演很重要的角色,我们应该了解table View的各种样式以胜任开发工作。
1.tableview 的组成结构
表头 单元格 节头 单元格 节尾 表尾
对于表头和表尾应用的不多,表头如刷新,
见代码
某个自定义的刷新方法。
表尾通常显示“更多”,也是一个加载数据的方式。
节头和节尾就是视具体情况而定了。
2.我们来看看苹果公司自带的单元格样式UITableViewCellStyle:
2.1 default只有图标和主标题
2.2SubTitle 有图标,主标题,副标题(这个可用于目前开发的项目)。
2.3value1:可以有图标(可选),主标题(左边对齐),副标题(右边对齐,可选)
2.4 value2:主标题副标题区中对齐
3.tableview 的数据源协议与委托协议
委托协议
tableView:didSelectRowAtIndexPath:选择单元格响应事件
还有其他一些的,暂时不介绍了
数据源协议:
tableview:cellforRowAtIndexPath:
返回cell.为单元格提供数据
tableview:numberOfRowsInSection:返回一个节中的行数
还有其他一些用的不多
4.创建表单元格:
如何理解表视图的单元格是需要重用的?
创建表单元格有三种方式:
4.1 纯代码
static NSString * CellIdentifier = @"CellIdetifier";
UITableViewCell * cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier];
//既然是纯代码的,为什么需要用设置identifier,因为cell是需要重用的,也就是说,当创建了一个对象,同时设置了他的标志(reuseIdentifier:)那在下次
调用cell 时,就直接用上面这种方法,可以这样理解吧。这叫可重用
if(cell == nil) {
cell = [[ UITableViewCell alloc] initWithStyle:UItableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
4.2代码加xib
这种方法需要在xib 中设置标志符,同时指定单元格的style.
那代码部分也与纯代码方式是有区别的:
static NSString * CellIdentifier = @"CellIdetifier";
UITableViewCell * cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPah];
这里是有IndexPath的
4.3自定义Cell
自定义Cell一般也是通过xib 和代码结合的方式创建。
在xib 上,自定义好样式,在标识检查器当中将custom class 目录下的class 改为创建的cell 类。
同样在属性检查器上,需要设置identifier ,以及style.(custom).
在代码部分,除了需要定义cell 类之外,在创建自定义cell时,
static NSString * CellIdentifier = @"CellIdetifier";
CustomCell * cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPah];
注意以上代码与4.2 的区别。然后就可以在cellForRowAtIndexPath数据源方法上对cell的一些自定义属性进行赋值了。
4.4 自定义Cell 还有另外一种形式,就是通过创建tableview的方式。
[self.diseaseTableView registerNib:[UINib nibWithNibName:@"FreeTelDepartmentCell" bundle:nil] forCellReuseIdentifier:@"FreeTelDepartmentCell"];//注明这里只是注册而已。
FreeTelDepartmentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FreeTelDepartmentCell"];
//这里是通过重用的方式调用cell.
之前转载的一篇博文讲的也是这个。
4.5 对于dequeueReusableCellWithIdentifier:index;和dequeueReusableCellWithIdentifier方法在xcode上运行好像没有差。