美文网首页iOS开发专题
不一样的TableView代码结构

不一样的TableView代码结构

作者: 摸着石头过河_崖边树 | 来源:发表于2017-05-07 17:08 被阅读49次

    前言##

    有时候,你是不是和我有同样的疑惑,为什么只要用到tableView的地方就总是要写什么数据源方法,每次都写同样的代码,是不是感觉生活好枯燥?

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView,
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    

    次次写,其实这样增加了我们的代码数量(然并没有什么质量),想想应该怎么改进呢?

    我们有时候会有这样的需求:一个页面展示许多数据。当考虑用tableView做的时候,大多数每个cell样式又不同且不能共用,如果采取每个cell自定义又会使VC代码增多,如果不用tableView,那是中间又有几个可以共用的cell,这个时候怎么做才可以呢?

    自定义tableView的数据源####

    第一个问题我们可以采用自定义数据源类来优化。
    分析:这个数据源应该需要传入什么参数?参数1:模型数组(一个模型包括,组头标题,组尾标题,每组的模型数组)

    @interface LZBArrayDataSourceSectionObject :NSObject
    
    @property (nonatomic, copy) NSString *headerTitle;  //头部标题
    @property (nonatomic, copy) NSString *footerTilte; //底部标题
    @property (nonatomic, strong) NSMutableArray *items; //每组模型数组
    @end
    

    参数2:每组注册cell的ID的数组,(注意数组的cellID的顺序)
    参数3:block,block里面需要确定每组cell的真实类型,cell模型赋值

      self.dataSource = [[LZBArrayDataSource alloc]initWithSectionItems:self.sectionArray cellIdentifiers:@[nomalCellID,LZBScaleTableViewCellID] configCellBlock:^(id cell, id item, NSInteger section) {
    
        if(section == 0)
        {
            UITableViewCell *callBackCell = (UITableViewCell *)cell;
            LZBScaleCellModel *model =  (LZBScaleCellModel *)item;
            callBackCell.textLabel.text = model.title;
        }
        else
        {
            LZBScaleTableViewCell *callBackCell = (LZBScaleTableViewCell *)cell;
            LZBScaleCellModel *model =  (LZBScaleCellModel *)item;
            callBackCell.model = model;
        }
    }];
    

    详情可以下载代码查看:
    代码地址:不一样的tableView代码结构

    继承结构的tableView的模块代码结构#####

    针对第二种需求:tableView的大多数cell不一样或者不同的控制器都用相同的cell结构UI,采用基类模板的思想,这个就是简单的继承基本思想,但是应用很广泛,这里不做详细讲解,详情可下载代码查看:
    代码地址:不一样的tableView代码结构

    最后赠言###

    如果觉得文章对您有帮助,不要忘记star哦!😝,star 是对程序猿最大的鼓励!

    相关文章

      网友评论

        本文标题:不一样的TableView代码结构

        本文链接:https://www.haomeiwen.com/subject/wzautxtx.html