UiTableViewdatasource的分离

创建ArrayDataSource类,继承于NSObject:

ArrayDataSource.h中:

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN
typedef void(^TableViewCellConfigureBlock)(id cell ,id item);
@interface ArrayDataSource : NSObject<UITableViewDataSource>
- (id)initWithItems:(NSArray *)anitems cellIdentifier:(NSString *)aCellIdentifier
     ConfigureBlock:(TableViewCellConfigureBlock)aConfigureBlock;
- (id)itemAtIndexPath:(NSIndexPath *)indexpath;
@end

NS_ASSUME_NONNULL_END

ArrayDataSource.m中:

#import "ArrayDataSource.h"
@interface ArrayDataSource()
@property (nonatomic,strong) NSArray *items;
@property (nonatomic,copy) NSString *cellIdentifier;
@property (nonatomic,copy) TableViewCellConfigureBlock configureBlock;

@end

@implementation ArrayDataSource

- (id)initWithItems:(NSArray *)anitems cellIdentifier:(NSString *)aCellIdentifier ConfigureBlock:(TableViewCellConfigureBlock)aConfigureBlock{
    self = [super init];
    if (self) {
        self.items = anitems;
        self.cellIdentifier = aCellIdentifier;
        self.configureBlock = aConfigureBlock;
    }
    return self;
}

- (id)itemAtIndexPath:(NSIndexPath *)indexpath{
    return self.items[indexpath.row];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier];
    id item = [self itemAtIndexPath:indexPath];
    self.configureBlock(cell, item);
    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.items.count;
}

@end

ViewController中使用:

#import "MainTableViewCell.h"
#import "ArrayDataSource.h"

@interface MainViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *myTableView;
@property (nonatomic,assign) BOOL isOpen;
@property (nonatomic,strong) ArrayDataSource *datasource;
@end

 self.myTableView.delegate = self;
//    self.myTableView.dataSource = self;
    NSArray *arr = @[@"1",@"2",@"3",@"4"];
//    self.myTableView.rowHeight = 140;
    [self.myTableView registerClass:[MainTableViewCell class] forCellReuseIdentifier:@"name"];
    self.datasource = [[ArrayDataSource alloc]initWithItems:arr cellIdentifier:@"name" ConfigureBlock:^(MainTableViewCell *cell, NSString *item) {
        cell.titleLab.text = item;
    }];
    self.myTableView.dataSource = self.datasource;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值