Heim > Fragen und Antworten > Hauptteil
网上的 iOS 案例教程中,UITable 都是用 ViewController 作为数据源和代理,比如:
self.listTableView.dataSource = self;
self.listTableView.delegate = self;
但是这样做 ViewController 会变得很长,如何新建一个文件来存储数据源和代理方法?
天蓬老师2017-04-18 09:07:45
关于这个其实就是超大的源代码如何拆分的问题。
这边推荐给你几种方法,都比较好。
1.独立的datasource,delegate管理类
@interface MyTableManager : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UITableView *tableView;
- (void)setupWithTableView:(UITableView *)tableView
@end
@interface MyTableManager ()
@property (nonatomic, strong) NSMutableArray *array;
@end
@implement MyTableManager
- (void)setupWithTableView:(UITableView *)tableView
{
if (_tableView != tableView) {
_tableView = tableView;
_tableView.delegate = self;
_tableView.dataSource = self;
// ...
// _array = ?
}
}
#param mark - DataSource
// ...
#param mark - Delegate
// ...
@end
然后你只要在viewController里适合的地方初始化这个manager,然后装载tableView就可以了。
这个方法的好处是如果你多处用同样的管理逻辑,那么非常好的将代码拆分开了。
如果你只是想减少viewController的行数,并且这个管理类并不适合各个viewController,那么还有一个方法,也蛮好的。
2.利用category来拆分文件
// MyViewController.h
@interface MyViewController (TableView) <UITableViewDelegate, UITableViewDataSource>
@end
// MyViewController+TableView.m
@implement MyViewController (TableView)
// ...
@end
没有万能的方案,找一个适合你的才好。