分离 UITableView 的 Delegate 和 Datasource

本文介绍了如何在iOS开发中将UITableView的Delegate和DataSource进行分离,以实现代码的解耦和复用。通过创建两个分别遵循UITableViewDataSource和UITableViewDelegate协议的独立类,并将它们整合到一个Model中,遵循MVVM设计模式,使得ViewController的代码更加简洁,同时也提高了代码的可维护性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

曾经和一些朋友和同学聊过 UITableView 在项目中的运用,发现大部分小伙伴和我之前一样,都是按照标准的流程,在 ViewController 里准守UITableViewDataSource 和 UITableViewDelegate 协议。然后完成代理需要完成的一系列方法。

UITableView 是在项目中很常见的一个控件,因此也就意味着你要重复的写这样相同的代码。当然,有很多选择了使用自定义代码块,解决了重复写相同代码的弊端。但对于整个项目来说,重复的代码还是显得过于臃肿。这里就分享一下另一种解决方案,分离 UITableView 的 Delegate 和 Datasource。

既然要分离,那么我们需要创建继承与 NSObject 的两个类,分别准守UITableViewDataSource 和 UITableViewDelegate 协议。

TBDataSource

.h

#import <UIKit/UIKit.h>

// cell 赋值的 block 
typedef void (^TBCellConfigBlock)(UITableViewCell *targetCell, id data, NSInteger row);

@interface TBDataSource : NSObject<UITableViewDataSource>

@property (nonatomic, strong) NSArray *listData;//数据源
@property (nonatomic, strong) NSString *tableCellIdentifier;// cell 复用标识
@property (nonatomic, copy) TBCellConfigBlock tableCellConfigBlock;

@end

.m

#import 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值