前言
学习过UITableView、AutoLayout以及MVC的相关知识,接下来通过一个微博页面实战来整合一下。
首先看一下效果图:
需求分析
- 此页面为非等高cell,tableview的组数为1
- cell内容根据数据动态展示
- cell自适应高度,根据微博有无图片,适配自己高度
项目准备
- 数据均为本地数据(status.plist 和 images)
上手操作
创建工程、导入资源
创建MVC对应文件,本案例为:XYStatusesViewController、XYStatus、XYStatusCell
控制器逻辑:控制器只需管理逻辑.至于cell的创建和内部细节,全部封装起来
- 懒加载本地plist数据
|
- 返回tableView对应的数据源
|
模型的封装:模型用来存储内部数据、并通过KVC来保存传入数据
@property (nonatomic, copy) NSString *text;@property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *icon;@property (nonatomic, copy) NSString *picture;@property (nonatomic, assign,getter=isVip) BOOL vip;/*** cellHeight*/@property (nonatomic, assign) CGFloat cellHeight;+ (instancetype)statusWithDict:(NSDictionary *)dict;- (instancetype)initWithDict:(NSDictionary *)dict;// 内部实现+ (instancetype)statusWithDict:(NSDictionary *)dict{return [[self alloc] initWithDict:dict];}- (instancetype)initWithDict:(NSDictionary *)dict{if (self == [super init]) {[self setValuesForKeysWithDictionary:dict];}return self;}
View的封装,cell推荐使用xib创建,因为方便
- 首先cell需要一个status属性、并提供一个类方法创建实例
@property (nonatomic, strong) XYStatus *status;+ (instancetype)cellWithTableView:(UITableView *)tableView;- 在Xib中设置内容控件并拖到.m中(设置好复用标识)
根据Xib创建view的步骤来,设置cell
- cell类方法的实现
|
- 设置cell的数据 status
|
##小结:
麻雀虽小,五脏俱全。
项目资料,均来自MJ
项目完整代码:微博UI布局