代码写的多了有时你会发现,常见的tableview无非是加上下刷新,加载接口,自定义Cell,传入数据模型,千篇一律,但你又不得不去写,干脆就去ctrl+c和ctrl+v,那么能不封装一个tableview,一个初始化就搞定呢,答案是可以的。在写之前你必须了解这个封装tableView的使用限制
下面讲一下封装思路
1、确定初始化方法的传参 2、确定使用的三方框架,这里我使用了 XMNetworking、Masonry、MJExtention、MJRefresh 你可以根据自己项目中的框架做适当的改变
关键性代码片段
/** 封装的自定义tableView初始化方法 @param url 接口地址 @param paramters 接口传参(一般列表请求都是POST请求) @param cellClassName 自定义Cell的类名 @param modelClassName model模型类名 @param cellModelName model在Cell中的属性名 @return table */ - (instancetype)initWithRequestUrl:(NSString *)url paramters:(NSMutableDictionary *)paramters cellClassName:(NSString *)cellClassName modelClassName:(NSString *)modelClassName cellModelName:(NSString *)cellModelName; -(instancetype)initWithRequestUrl:(NSString *)url paramters:(NSMutableDictionary *)paramters cellClassName:(NSString *)cellClassName modelClassName:(NSString *)modelClassName cellModelName:(NSString *)cellModelName{ if (self = [super init]) { _url = url; _paramters = paramters; _cellClassName = cellClassName; _modelClassName = modelClassName; _cellModelName = cellModelName; self.backgroundColor = TableBackgroundColor; [self registerClass:NSClassFromString(cellClassName) forCellReuseIdentifier:@"Cell"]; self.estimatedRowHeight = 100.f; self.delegate = self; self.dataSource = self; self.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ _page = 1; [self loadData]; }]; self.mj_footer =[MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ _page++; [self loadData]; }]; } return self; }代码地址