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