美文网首页
iOS UITableView的封装

iOS UITableView的封装

作者: e32950f79177 | 来源:发表于2018-06-29 18:07 被阅读0次

    利用空闲时间封装了一下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

    相关文章

      网友评论

          本文标题:iOS UITableView的封装

          本文链接:https://www.haomeiwen.com/subject/edaayftx.html