您的位置:首页 > 其它

技术专题tableView

2015-10-15 15:58 281 查看
tableView在开发中扮演很重要的角色,我们应该了解table View的各种样式以胜任开发工作。

1.tableview 的组成结构

表头 单元格 节头 单元格 节尾 表尾

对于表头和表尾应用的不多,表头如刷新,

见代码

http://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=210281204&idx=1&sn=1ed54cd04deeb1e8598464ab93d236be&scene=23&srcid=1014zc2a0JfBJXnenWAPmLt9#rd

某个自定义的刷新方法。

表尾通常显示“更多”,也是一个加载数据的方式。

节头和节尾就是视具体情况而定了。

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上运行好像没有差。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: