红包实体,文章实体 都属于动态 ,定义时候实现该协议DynamicPro,相当于java中的接口。
dataList 数组中 存放的是通过网络请求拿到的 DynamicPro 类型的动态列表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@protocol DynamicPro <NSObject>
@end
红包实体,文章实体 都属于动态 ,定义时候实现该协议DynamicPro。
dataList 数组中 存放的是通过网络请求拿到的 DynamicPro 类型的动态列表。
DynamicCell: UITableViewCell
{
属性 Id<DynamicPro> dynamic; //文章动态,普通动态,直播动态,红包类型动态
}
@implementation DynamicCell
-(void)setDynamic:(id<DynamicPro>)dynamic{
_dynamic = dynamic;
//DynamicCell 有很多子类cell: 红包cell ,文章cell,直播cell 等
//在子类cell 渲染具体UI数据绑定
}
@end
表格 cellFor 渲染的时候:{
DynamicPro *dynamic = self.dataList[indexPath.row];
DynamicCell * cell = [红包cell new]; //根据dynamic类型 创建 不同的 动态cell
//最终统一设置动态数据
[cell setDynamic: dynamic];
}
表格高度 heightFor 渲染的时候:{
DynamicPro *dynamic = self.dataList[indexPath.row];
if(dynamic 高度不变的){
return 44;
}else{
//高度变动的用自动布局
return UITableViewAutomaticDimension;
}
}
表格 estimatedHeightForRowAtIndexPath 进行自动布局的估算
{ return 100;
}