网上的 iOS 案例教程中,UITable 都是用 ViewController 作为数据源和代理,比如:
self.listTableView.dataSource = self; self.listTableView.delegate = self;
但是这样做 ViewController 会变得很长,如何新建一个文件来存储数据源和代理方法?
学习是最好的投资!
关于这个其实就是超大的源代码如何拆分的问题。这边推荐给你几种方法,都比较好。
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
没有万能的方案,找一个适合你的才好。
都=你新建的类,在新建的类里实现协议方法就行了
关于这个其实就是超大的源代码如何拆分的问题。
这边推荐给你几种方法,都比较好。
1.独立的datasource,delegate管理类
然后你只要在viewController里适合的地方初始化这个manager,然后装载tableView就可以了。
这个方法的好处是如果你多处用同样的管理逻辑,那么非常好的将代码拆分开了。
如果你只是想减少viewController的行数,并且这个管理类并不适合各个viewController,那么还有一个方法,也蛮好的。
2.利用category来拆分文件
没有万能的方案,找一个适合你的才好。
都=你新建的类,在新建的类里实现协议方法就行了