1. 程式人生 > >ios對UITableView進行封裝

ios對UITableView進行封裝

不同 重復 控制 擴展 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進行封裝