在ios中使用适配器设计模式优化UITableView

CHGAdapter使用

1  在ios中使用适配器设计模式优化UITableView

1.11.什么是适配器(Adapter)

在日常生活中我们通常听到的适配器有电源适配器、USB适配器等

当我们的手机充电、或者笔记本电脑充电的时候不能直接使用220V的交流电,必须通过笔记本标配的电源适配器进行一次转化。插线板(UITableView)上有插口(delegate,dataSource),电源适配器(Adapter)的一边插在220V的插座上,另一边插在笔记本电脑(UITableViewCell)的电源处。电源适配器在这里做的工作是将220V的交流电电压转换成适合笔记本电脑需要的直流电电压。

为UITableView设计Adapter

Adapter实现如何给UITableViewCell适配数据。

平时我们一般在Controller中实现UITableView的delegate(UITableViewDataSource,UITableViewDelegate),然后在Controller中实现delegate中的方法,达到给UITableViewCell显示相应的数据。具体的代码大家都很熟悉,这里就不做举例。

使用适配器的做法:

基于Adapter设计模式我本人给UITableView开发了一款适配器框架(CHGAdapter)github:https://github.com/chenhaigang888/CHGAdapter

pod 'CHGAdapter', '~> 0.1.0'

#import

@interfaceViewController :UIViewController

@end

#import "ViewController.h"

#import "CHGTableViewAdapter.h"

@interface ViewController ()

@property(nonatomic,weak) IBOutlet UITableView * tableView;

@property(nonatomic,strong) CHGTableViewAdapter * adapter;

@property(nonatomic,strong) CHGTableViewAdapterData * adapterData;

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

    self.adapter.adapterData = self.adapterData;

    self.tableView.tableViewAdapter = self.adapter;

    [self.tableView setEmptyDataShowWithTitle:@"暂无数据" image:@"icon_dl_xsmm"];

    self.tableView.eventTransmissionBlock= ^id(idtarget,idparams,NSIntegertag,CHGCallBackcallBack) {

        return nil;

    };


    self.tableView.tableViewDidSelectRowBlock= ^(UITableView*tableView,NSIndexPath*indexPath,iditemData) {

        NSLog(@"当前点击section:%li row:%li",indexPath.section,indexPath.row);

    };

}

- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

}

-(CHGTableViewAdapter*)adapter{

    if (!_adapter) {

        _adapter = [CHGTableViewAdapter new];

        _adapter.cellName = @"SimpleTableViewCell";

        _adapter.headerName = @"SampleTableViewHeaderFooterView";

        _adapter.footerName = @"SampleTableViewHeaderFooterView";

        _adapter.cellHeight = -1;

        _adapter.headerHeight = 30;

        _adapter.footerHeight = 44;

    }

    return_adapter;

}

-(CHGTableViewAdapterData*) adapterData {

    if (!_adapterData) {

        _adapterData = [CHGTableViewAdapterData new];

    }

    _adapterData.cellDatas = @[

                               @[@"1",@"2",@"3",@"4",@"5",@"6"],

                               @[@"1",@"2",@"3",@"4",@"5",@"6"]

                               ];

    _adapterData.headerDatas = @[@"第一个section的Header",@"第二个section的Header"];

    _adapterData.footerDatas = @[@"第一个section的Footer",@"第二个section的Footer"];

    return_adapterData;

}

@end

推荐阅读更多精彩内容