UITableView的懒人封装(几句代码搞定网络加载,上下拉刷新)

代码写的多了有时你会发现,常见的tableview无非是加上下刷新,加载接口,自定义Cell,传入数据模型,千篇一律,但你又不得不去写,干脆就去ctrl+c和ctrl+v,那么能不封装一个tableview,一个初始化就搞定呢,答案是可以的。在写之前你必须了解这个封装tableView的使用限制


  1. 你的自定义Cell不能有复杂的交互,比如长按手势,accessoryView带Button等,当然,你可以自己去加代理去实现这些功能,但这会破坏封装的通用性
  2. 自定义Cell最好是autolayout布局(案例中使用masonry框架)
  3. 点击事件需使用代理实现,不能封装.

下面讲一下封装思路

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;
}

代码地址


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部