iOS UITableView的封装

2018-06-29  本文已影响0人  e32950f79177

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

import <UIKit/UIKit.h>

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

/CommonTableView继承UITableView,遵守tableView协议/
@interface CommonTableView : UITableView<UITableViewDelegate,UITableViewDataSource>

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

/*

/***********************以下为.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

上一篇下一篇

猜你喜欢

热点阅读