為了便于閱讀飞醉,教程以 TTTableView 的用法為例冲茸,TTCollectionView 的用法基本上類似
統(tǒng)一配置、個(gè)性化配置
TTTableView 最主要的工作就是配置好 sections
和 cells
數(shù)組,就可以快速的渲染出視圖了噪裕。
其中每一個(gè) Cell 都是獨(dú)立的蹲盘,可以為不同的 Cell 設(shè)置不同的 類型、數(shù)據(jù)膳音、尺寸
TTCellTemplate *cell1 = [TTCellTemplate new];
cell.viewClass = [TTMessageCell class]; // type 1
cell.data = model1;
// 支持鏈?zhǔn)秸Z(yǔ)法
TTCellTemplate *cell2 = TTCellTemplate.make
.viewClassSet([TTRadioCell class]) // type 2
.dataSet(model2);
TTSectionTemplate *section = [TTSectionTemplate new];
[section.cells addObject:cell1];
[section.cells addObject:cell2];
每一個(gè) Cell 將按照你所配置的類型、數(shù)據(jù)進(jìn)行渲染
但是當(dāng)一個(gè) section 中所有 Cell 的類型一致時(shí)铃诬,可以通過配置 section 指定一個(gè) 統(tǒng)一的默認(rèn)類型
TTSectionTemplate *section = [TTSectionTemplate new];
section.viewClass = [TTMessageCell class]; // 整個(gè) Section 可以統(tǒng)一配置 Cell 類型
[section.cells addObject:model1]; // cells 可以直接存儲(chǔ) data
[section.cells addObject:model2];
自動(dòng)刷新
TTTableView 的屬性 sections
數(shù)組祭陷,在默認(rèn)情況下,當(dāng)你對(duì)配置數(shù)組進(jìn)行改動(dòng)操作時(shí)趣席,TableView 會(huì)自動(dòng)刷新視圖兵志。
當(dāng)然你也可以禁用這樣的邏輯,自行手動(dòng)刷新視圖宣肚。只需要關(guān)閉他們的 autoload 選項(xiàng)即可
tableView.autoload = NO;
有自己的BaseCell ?
也許你有自定義的 BaseTableCell
或 BaseTableHeader
想罕,不便于繼承 TTTableViewCell、TTTableReusableView 時(shí)
為了讓自定義的基類支持可配置霉涨,可以參考 TTTableViewCell 等類按价,遵循 TTCellProvider、 TTReusableViewProvider 這兩個(gè)視圖協(xié)議笙瑟。
這樣你的基類也就可以被支持用于 TTTableView 進(jìn)行快速配置渲染
固定尺寸楼镐、自適應(yīng)尺寸
不管 TableCell 還是 CollectionCell 都支持固定尺寸,支持使用約束自適應(yīng)尺寸
-
設(shè)置固定寬高往枷,只需要顯示指定 TTCellTemplate 的
width
和height
屬性即可TTCellTemplate *cell = [TTCellTemplate new]; cell.width = 100; // 對(duì) tableView 無(wú)效 cell.height = 40;
-
動(dòng)態(tài)計(jì)算寬高框产,不能設(shè)置
width
和height
屬性對(duì)于 TableCell,需要 Custom TableCell 內(nèi)部的子控件错洁,在垂直方向上以及與邊界充滿明確的約束
-
CollectionCell 的使用方式稍微復(fù)雜些秉宿,大概步驟如下
// 1. 設(shè)置大于 0 的預(yù)估尺寸 TTCollectionView.layout.estimatedItemSize = CGSizeMake(100, 100); // 2. 與 Table 類似,Custom CollectionCell, 要在水平屯碴、垂直兩個(gè)方向上描睦,都有明確的約束
詳細(xì)步驟 參考這里
注意:目前只有 Table 支持高度緩存,Collection 如果使用動(dòng)態(tài)寬高窿锉,性能會(huì)降低
Section 單選多選
支持按照 Section 為單位酌摇,按組分別指定單選、多選邏輯
注意:使用該特性嗡载,必須要打開 tableView 的
allowsMultipleSelection
self.tableView.allowsMultipleSelection = YES; // 該屬性必須為YES
TTSectionTemplate *section = [TTSectionTemplate new];
section.allowsMultipleSelection = YES; // 該組是否多選
section.forceSelection = NO; // 該組是否強(qiáng)制選擇