ios开发UI篇—使用纯代码自定义UItableviewcell
一、实现效果
二、使用纯代码自定义一个tableview的步骤
1.新建一个继承自UITableViewCell的类
2.重写initWithStyle:reuseIdentifier:方法
添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中)
进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片)
3.提供2个模型
数据模型: 存放文字数据\图片数据
frame模型: 存放数据模型\所有子控件的frame\cell的高度
4.cell拥有一个frame模型(不要直接拥有数据模型)
5.重写frame模型属性的setter方法: 在这个方法中设置子控件的显示数据和frame
6.frame模型数据的初始化已经采取懒加载的方式(每一个cell对应的frame模型数据只加载一次)
三、文件结构和实现代码
1.文件结构
2.实现代码:
NJWeibo.h文件
1 #import <Foundation/Foundation.h> 2 3 @interface NJWeibo : NSObject 4 @property (nonatomic, copy) NSString *text; // 内容 5 @property (nonatomic, copy) NSString *icon; // 头像 6 @property (nonatomic, copy) NSString *name; // 昵称 7 @property (nonatomic, copy) NSString *picture; // 配图 8 @property (nonatomic, assign) BOOL vip; 9 10 - (id)initWithDict:(NSDictionary *)dict; 11 + (id)weiboWithDict:(NSDictionary *)dict; 12 @end
NJWeibo.m文件
1 #import "NJWeibo.h" 2 3 @implementation NJWeibo 4 5 - (id)initWithDict:(NSDictionary *)dict 6 { 7 if (self = [super init]) { 8 [self setValuesForKeysWithDictionary:dict]; 9 } 10 return self; 11 } 12 13 + (id)weiboWithDict:(NSDictionary *)dict 14 { 15 return [[self alloc] initWithDict:dict]; 16 } 17 18 @end
NJWeiboCell.h文件
1 #import <UIKit/UIKit.h> 2 @class NJWeiboFrame; 3 4 @interface NJWeiboCell : UITableViewCell 5 /** 6 * 接收外界传入的模型 7 */ 8 //@property (nonatomic, strong) NJWeibo *weibo; 9 10 @property (nonatomic, strong) NJWeiboFrame *weiboFrame; 11 12 + (instancetype)cellWithTableView:(UITableView *)tableView; 13 @end
NJWeiboCell.m文件
1 #import "NJWeiboCell.h" 2 #import "NJWeibo.h" 3 #import "NJWeiboFrame.h" 4 5