欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios对UITableView进行封装详情介绍

程序员文章站 2022-10-26 13:15:05
原由 从事ios工作有段时间了,其中uitableview频繁被使用中,这个过程中不断重复的创建加入代理,好麻烦,而且也让viewcontroller代码显的臃肿,因此做了下面的封装 思路 1.减少...
原由

从事ios工作有段时间了,其中uitableview频繁被使用中,这个过程中不断重复的创建加入代理,好麻烦,而且也让viewcontroller代码显的臃肿,因此做了下面的封装

思路

1.减少重复工作

tableview创建的工作做一次

2.类似的工作作一次

获取数据过程中就把最后需要多少个section,多少个cell的工作做完,后续直接用

3.是谁的东西就归谁做

tableviewcell的高度计算,数据填充都让cell自己去做

代码简单使用样例

简单的一个使用样例

1.viewcontroller

//数据源填充

-(void)createdatasource{

xctableviewdatasection *section = [[xctableviewdatasection alloc] init];

[section.rowmodelsarr addobject:@"1"];

[section.rowmodelsarr addobject:@"2"];

[section.rowmodelsarr addobject:@"3"];

[section.rowmodelsarr addobject:@"4"];

[self.datasource.sections addobject:section];

}

//cellforrow类似功能

-(class)xctableview:(uitableview *)tableview cellclassatmodel:(id)model{

return [tableviewcell1 class];

}

//tableviewcell的点击事件

-(void)xctableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath model:(id)model{

[self.tableview deselectrowatindexpath:indexpath animated:yes];

}

2.tableviewcell

设置高度

-(cgfloat)xctableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath{

return 100;

}

赋值

-(void)xcsetmodel:(id)model forindexpath:(nsindexpath *)indexpath{

_lbname.text = model;

}

现有提供的代理

1.viewcontroller

/************设置tableviewcell *******/

//通过model判断加入不同的tableviewcell

-(class)xctableview:(uitableview *)tableview cellclassatmodel:(id)model;

//通过indexpath判断加入不同的tableviewcell

-(class)xctableview:(uitableview *)tableview cellclassatindexpath:(nsindexpath *)indexpath;

/********tableviewcell中操作反馈作用的代理 *******/

-(void)xctableviewcell:(xctableviewcell *)cell;

-(void)xctableviewcell:(xctableviewcell *)cell model:(id)model;

-(void)xctableviewcell:(xctableviewcell *)cell button:(uibutton *)button model:(id)model;

2. tableviewcell

/*****提供通过indexpath和数据两种方法判断设置高度 *******/

-(cgfloat)xctableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath;

-(cgfloat)xctableview:(uitableview *)tableview heightforrowatmodel:(id)model;

扩展的功能

1.提供self.datasource.isxib来设置支持使用xib和纯代码编写的两种cell

2.tableviewcell提供parameters可以传入请求数据,适用复杂业务需要外层json判断的

准备加入的(等我有空了就加)

1.tableviewcell中加入curcontroller,获取当前控制器(代码被我注释了,已经有了)

2.重写tableview和datasource方法

3.对header和footer的封装