版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/grl18840839630/article/details/85329109
创建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;