澳门永利m5900cc

澳门永利m5900cc

  • 鑱旂郴鎴戜滑鈥斿崐鏈堣皥缃 2019-07-16
  • 【江州天气】江州天气预报,一周、15天、30天江州天气预报查询 2019-07-16
  • 雄安新区:个人产权住房以共有产权房为主 2019-07-16
  • 吉林省委书记巴音朝鲁致信网友:共同构筑网上网下最大同心圆,集聚振兴发展最强正能量 2019-07-16
  • 1943年2月17日:赖传珠关于敌向盐阜区扫荡情况的报告 2019-07-16
  • 揪心悲剧!男孩身体伸出天窗 撞限高栏不幸身亡 2019-07-16
  • 台湾医师:电子烟危害多 2019-07-16
  • 【抚宁天气】抚宁天气预报,一周、15天、30天抚宁天气预报查询 2019-07-16
  • 《中国古典和谐政治理念与治国方略研究》简介 2019-07-16
  • 江苏通报少女被泼开水烫伤案:行凶者未实施开水灌喉 2019-07-16
  • 从未雨绸缪到枕戈待旦 2019-07-16
  • 2018反转新闻盘点:看清真相有多难? 2019-07-16
  • 2019女足世界杯:耐克助力中国女足全新球衣亮相巴黎 2019-07-16
  • 高洪波:当图书管理员“监守自盗” 和战友偷书看 2019-07-16
  • 2018年国家社科基金后期资助项目立项名单公布 2019-07-16
  • 登录 立即注册
    金钱:

    澳门永利m5900cc

    iOS “类族”的实际运用 [复制链接]

    2018-8-17 14:19
    ceshishangchuan 阅读:470 评论:0 赞:1
    Tag:  

    澳门永利m5900cc www.alfanarrealestate.com 1. 场景还原

    如图,三种cell的tableView:

    三种cell.gif

    后台返回的json数据如下:

    {
        "result": true,
        "data": {
            "list": [ {
                     "type": 0,
                     "title": "第一种cell,图片在左边",
                     "image": "number_1"
                     }, {
                     "type": 1,
                     "title": "第二种cell,图片在右边",
                     "image": "number_2"
                     }, {
                     "type": 2,
                     "title": "第三种cell,图片在中间",
                     "image": "number_3"
                     }, {
                     "type": 0,
                     "title": "老子反手就是一个呵呵哒",
                     "image": "number_1"
                     }]
        },
        "msg": "ok",
        "code": 200,
        "executed": "0.0320830345"
    }

     

    类似于这种同种model,多种cell的tableView相信不少开发者在实际项目开发中都遇到过,我分享一下我的做法,谨以抛砖引玉。

    2. 文件组织

    1692043-d5b2c3e75df467aa (1).png

    2.1 什么是抽象基类?

    只用于继承、不用于实例化的类。

    3. 类族

    类族,就是将子类的实现细节隐藏在抽象基类中。(个人理解)

    这是抽象基类cell代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    + (instancetype)cellWithType:(CQClassClusterType)type {    // 根据type创建对应的子类cell
        switch (type) {        case CQClassClusterTypeA:
            {            return [[CQClassClusterCellA alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CQClassClusterCellAReuseID];
            }            break;            
            case CQClassClusterTypeB:
            {            return [[CQClassClusterCellB alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CQClassClusterCellBReuseID];
            }            break;            
            case CQClassClusterTypeC:
            {            return [[CQClassClusterCellC alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CQClassClusterCellCReuseID];
            }            break;
        }
    }

    使用:

    1
    2
    3
    4
    5
    6
    7
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        CQClassClusterModel *model = self.dataArray[indexPath.row];
        CQClassClusterBaseCell *cell = [tableView dequeueReusableCellWithIdentifier:model.cellReuseID];    if (!cell) {        // 类族模式
            cell = [CQClassClusterBaseCell cellWithType:model.type];
        }
        [cell setModel:model];    return cell;
    }

    4. demo

    https://github.com/CaiWanFeng/iOS_Storage

    demo所在位置:

    1692043-1c57d675534de4ae.png


    分享到:
    我来说两句
    facelist
    您需要登录后才可以评论 登录 | 立即注册
    所有评论(0)
    关闭

    每日头条

    通过邮件订阅最新 澳门永利m5900cc 信息
    上一条 /4 下一条
    联系我们
    关闭
    合作电话:
    13802416937
    Email:
    435399051@qq.com
    商务市场合作/投稿
    问题反馈及帮助
    联系我们

    广告投放| Github|申请友链|手机版|澳门永利m5900cc ( 澳门永利m5900cc )

    返回顶部