iOS UITableView的封装

利用空闲时间封装了一下tableView,.h和.m文件以及如何调用均已注释,粘贴过去就可以用了,简单粗暴。
//
// CommonTableView.h
// TRY
//
// Created by Jianwei Dong on 2018/6/29.
// Copyright © 2018年 Jianwei Dong. All rights reserved.
//

import

/点击cell触发此回调方法/
typedef void(^SelectCell)(NSIndexPath indexPath);
/
在此block中返回你要创建的cell*/
typedef UITableViewCell *(^CreateCell)(NSIndexPath *indexPath);

/CommonTableView继承UITableView,遵守tableView协议/
@interface CommonTableView : UITableView

/重构tableiView初始化方法,在需要的地方调用此初始化方法传入相应参数即可/
-(instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style rowCount:(NSInteger)rows cellHeight:(CGFloat)height cell:(CreateCell)cell selectedCell:(SelectCell)selectBlock;

/*

  • (void)viewDidLoad {
    [super viewDidLoad];
    //刷新数据
    [self.tableView reloadData];
    // Do any additional setup after loading the view.
    }
    //懒加载tableView
    -(CommonTableView *)tableView
    {
    if (!_tableView) {

     __weak UITableView * tb = _tableView;
     _tableView = [[CommonTableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain rowCount:[self.dataList count] cellHeight:100 cell:^UITableViewCell *(NSIndexPath *indexPath) {
    
        // 创建你自定义的cell
         static NSString *identifier = @"cell";
         TryTableViewCell *cell = [tb dequeueReusableCellWithIdentifier:identifier];
         if (!cell) {
             cell = [[TryTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
         }
         cell.textLabel.text = self.dataList[indexPath.row];
         return cell;
     } selectedCell:^(NSIndexPath *indexPath) {
    
         //点击cell执行此方法
         NSLog(@"网%ld",indexPath.row);
     }];
     [self.view addSubview:_tableView];
    

    }
    return _tableView;
    }
    */
    @end

/***********************以下为.m文件****************************/

//
// CommonTableView.m
// TRY
//
// Created by Jianwei Dong on 2018/6/29.
// Copyright © 2018年 Jianwei Dong. All rights reserved.
//

import "CommonTableView.h"

@interface CommonTableView ()

/rows/
@property (nonatomic)NSInteger rows;
/cell的高度/
@property(nonatomic,assign)CGFloat height;
/声明自定义类型变量/
@property (nonatomic,copy)SelectCell selectBlock;
/声明自定义类型变量/
@property(nonatomic,copy)CreateCell createCell;

@end

@implementation CommonTableView

/初始化方法的实现/
-(instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style rowCount:(NSInteger)rows cellHeight:(CGFloat)height cell:(CreateCell)cell selectedCell:(SelectCell)selectBlock
{
self = [super initWithFrame:frame style:style];
if (self) {
self.dataSource = self;
self.delegate = self;
self.rows = rows;
self.height = height;
self.createCell = cell;
self.selectBlock = selectBlock;
self.tableFooterView = [[UIView alloc]init];
}
return self;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell * cell = self.createCell(indexPath);
return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
self.selectBlock(indexPath);
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.rows;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return self.height;
}
@end

你可能感兴趣的:(iOS UITableView的封装)