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

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


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

下面讲一下封装思路

1、确定初始化方法的传参
2、确定使用的三方框架,这里我使用了
XMNetworkingMasonryMJExtentionMJRefresh
你可以根据自己项目中的框架做适当的改变

关键性代码片段

/**
 封装的自定义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;
}

代码地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值