ios - tableView如何新建一个类作为数据源和代理?
PHPz
PHPz 2017-04-18 09:05:45
0
2
363

网上的 iOS 案例教程中,UITable 都是用 ViewController 作为数据源和代理,比如:

self.listTableView.dataSource = self;
self.listTableView.delegate   = self;

但是这样做 ViewController 会变得很长,如何新建一个文件来存储数据源和代理方法?

PHPz
PHPz

学习是最好的投资!

全部回复(2)
Peter_Zhu

关于这个其实就是超大的源代码如何拆分的问题。
这边推荐给你几种方法,都比较好。

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

没有万能的方案,找一个适合你的才好。

巴扎黑

都=你新建的类,在新建的类里实现协议方法就行了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板