tableView自定义cell与api数据展示纪录(也是MVC的例子)

一、每个Cell高度不一致的一般做法:

1.自定义一个cell,在initWithStyle:reuseIdentifier:构造方法中添加所有可能显示的子控件

例如:添加一个图片

    _introduceImage = [[UIImageViewalloc]init];

    [self.contentViewaddSubview:_introduceImage];


2.新建一个模型类,比如StatusCellFrame,作用是:描述一个Cell内部所有子控件的frame属性

* 提供一系列CGRect类型的属性给Cell访问,(即对应cell中的每一个变量对应一个CGRect的变量)

* 提供一个接口来接收模型数据(比如Status

* 在接收模型数据的同时,计算所有子控件的framecell的高度


3.回到控制器(代理和数据源)

1> tableView:heightForRowAtIndexPath:方法中利用StatusCellFrame返回cell的高度

2> tableView:cellForRowAtIndexPath:方法中

* 新建自定义cell

* Cell传递对应的StatusCellFrame对象


4. 自定义Cell

1> 提供接口接收StatusCellFrame对象

2> 在接收StatusCellFrame对象的同时,设置所有子控件的frame,设置所有子控件的数据


注意:

1、不能自动换行:要在1、中加入  .numberOfLines = 0,设置不限制行数,默认是1行;

在4、中设置字体与2、中计算高度时候的字体一致;

2、tableView:heightForRowAtIndexPath:在开始的时候把所有的cell高度全部算一遍,之后不再调用;

     tableView:cellForRowAtIndexPath:每次cell进入屏幕的时候就会调用

     [tableView reloaddata] 刷新数据,即重新访问数据源,向代理和数据源发消息(即调用代理方法tableView:heightForRowAtIndexPath:和数据源方法tableView:cellForRowAtIndexPath:,tableView:numberOfRowsInSection:


调用顺序:tableView:numberOfRowsInSection:返回行数

                  tableView:heightForRowAtIndexPath:计算每行高度

                  tableView:cellForRowAtIndexPath:


整个过程顺序见下图

                           View                                                                                           controller                                                                                  Model


  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值