ios對UITableView進行封裝
阿新 • • 發佈:2017-12-22
不同 重復 控制 擴展 height control ade class 通過
---恢復內容開始---
原由
從事ios工作有段時間了,其中UItableView頻繁被使用中,這個過程中不斷重復的創建加入代理,好麻煩,而且也讓viewcontroller代碼顯的臃腫,因此做了下面的封裝
思路
1.減少重復工作
tableview創建的工作做一次
2.類似的工作作一次
獲取數據過程中就把最後需要多少個section,多少個cell的工作做完,後續直接用
3.是誰的東西就歸誰做
tableviewcell的高度計算,數據填充都讓cell自己去做
代碼簡單使用樣例
簡單的一個使用樣例
1.viewcontroller
//數據源填充
-(void)createDataSource{ XCTableViewDataSection *section = [[XCTableViewDataSection alloc] init]; [section.rowModelsArr addObject:@"1"]; [section.rowModelsArr addObject:@"2"]; [section.rowModelsArr addObject:@"3"]; [section.rowModelsArr addObject:@"4"]; [self.dataSource.sections addObject:section]; }
//cellforrow類似功能
-(Class)xctableView:(UITableView *)tableView cellClassAtModel:(id)model{
return [TableViewCell1 class];
}
//tableviewcell的點擊事件
-(void)xctableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath model:(id)model{ [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; }
2.tableviewcell
設置高度
-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 100;
}
賦值
-(void)xcSetModel:(id)model forIndexPath:(NSIndexPath *)indexPath{
_lbName.text = model;
}
現有提供的代理
1.viewcontroller
/************設置tableviewcell *******/ //通過model判斷加入不同的tableViewCell -(Class)xctableView:(UITableView *)tableView cellClassAtModel:(id)model; //通過indexpath判斷加入不同的tableViewCell -(Class)xctableView:(UITableView *)tableView cellClassAtIndexPath:(NSIndexPath *)indexPath; /********tableviewcell中操作反饋作用的代理 *******/ -(void)xctableviewCell:(XCTableViewCell *)cell; -(void)xctableviewCell:(XCTableViewCell *)cell model:(id)model; -(void)xctableviewCell:(XCTableViewCell *)cell button:(UIButton *)button model:(id)model;
2. tableviewcell
/*****提供通過indexpath和數據兩種方法判斷設置高度 *******/
-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtModel:(id)Model;
擴展的功能
1.提供self.dataSource.isXib來設置支持使用xib和純代碼編寫的兩種cell
2.tableviewcell提供parameters可以傳入請求數據,適用復雜業務需要外層json判斷的
準備加入的(等我有空了就加)
1.tableviewcell中加入curController,獲取當前控制器(代碼被我註釋了,已經有了)
2.重寫tableview和datasource方法
3.對header和footer的封裝
代碼地址:https://github.com/xc-yun/xctableview.
---恢復內容結束---
ios對UITableView進行封裝