• ios对UITableView进行封装


    原由

    从事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的封装

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

  • 相关阅读:
    [转]优秀的程序员不会觉得累成狗是一种荣耀
    .NET读写Excel工具Spire.XlS使用(DataExport )
    WPF之Binding深入探讨
    第一个WPF应用程序
    Visio作图
    唯一的重复元素
    Strange Problem O(∩_∩)O~
    数据库知识点①
    HDU 2825 Wireless Password
    POJ 1625 Censored!
  • 原文地址:https://www.cnblogs.com/wuwenyun/p/8085706.html
Copyright © 2020-2023  润新知