在ios中使用適配器設計模式優化UITableView

CHGAdapter使用ios

1  在ios中使用適配器設計模式優化UITableViewgit

1.11.什麼是適配器(Adapter)github

在平常生活中咱們一般聽到的適配器有電源適配器、USB適配器等。設計模式

當咱們的手機充電、或者筆記本電腦充電的時候不能直接使用220V的交流電,必須經過筆記本標配的電源適配器進行一次轉化。插線板(UITableView)上有插口(delegate,dataSource),電源適配器(Adapter)的一邊插在220V的插座上,另外一邊插在筆記本電腦(UITableViewCell)的電源處。電源適配器在這裏作的工做是將220V的交流電電壓轉換成適合筆記本電腦須要的直流電電壓。框架

爲UITableView設計Adapter優化

Adapter實現如何給UITableViewCell適配數據。atom

平時咱們通常在Controller中實現UITableView的delegate(UITableViewDataSource,UITableViewDelegate),而後在Controller中實現delegate中的方法,達到給UITableViewCell顯示相應的數據。具體的代碼你們都很熟悉,這裏就不作舉例。設計

使用適配器的作法:code

基於Adapter設計模式我本人給UITableView開發了一款適配器框架(CHGAdapter)github:https://github.com/chenhaigang888/CHGAdapter開發

#import <UIKit/UIKit.h>

@interface ViewController : 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 {
    [super viewDidLoad];
    self.adapter.adapterData = self.adapterData;
    self.tableView.tableViewAdapter = self.adapter;
    [self.tableView setEmptyDataShowWithTitle:@"暫無數據" image:@"icon_dl_xsmm"];
    self.tableView.eventTransmissionBlock = ^id(id target, id params, NSInteger tag, CHGCallBack callBack) {
        return nil;
    };
    
    self.tableView.tableViewDidSelectRowBlock = ^(UITableView *tableView, NSIndexPath *indexPath, id itemData) {
        NSLog(@"當前點擊section:%li row:%li",indexPath.section,indexPath.row);
    };
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

-(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
相關文章
相關標籤/搜索