iOS UITableView的封装
利用空闲时间封装了一下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;
/*
-
(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