ios对UITableView进行封装

起因

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

思路

1.减小重复工做

tableview建立的工做作一次git

2.相似的工做做一次

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

3.是谁的东西就归谁作

tableviewcell的高度计算,数据填充都让cell本身去作json

代码简单使用样例

简单的一个使用样例
代理

1.viewcontroller

//数据源填充code

-(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的点击事件get

-(void)xctableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath model:(id)model{
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

2.tableviewcell

设置高度it

-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 100;
}

赋值io

-(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的封装

代码地址:https://github.com/xc-yun/xctableview.

相关文章
相关标签/搜索