Skip to content

Commit f188069

Browse files
committed
modify:更新readme
1 parent ebc14f2 commit f188069

File tree

1 file changed

+67
-6
lines changed

1 file changed

+67
-6
lines changed

README.md

Lines changed: 67 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,77 @@
11
JHCellConfig
22
=======
33

4-
- Flexible way to build a UITableView contains different kinds of cells, super easy to modify.
5-
- 一种十分灵活易变的适用于创建有多种cell的UITableView的方法,在调整不同种cell的顺序、及增删某种cell时极其方便
4+
适用于UITableView的“蝇量级”框架。
5+
将业务复杂度集中,减少代码量,提高可阅读性。
66

7+
- 本类的思想,是将tableView中cell的相关逻辑集中起来,
8+
- 放到数组中管理,而不是将业务逻辑分散在各个代理方法中。
9+
- 特别是使用基类BaseTableViewController进行转接后,具体业务vc不需要实现tableView cell相关的代理方法(header/footer除外)
710

8-
本类的思想,是将tableView中cell的相关逻辑集中起来,
9-
放到数组中管理,而不是将业务逻辑分散在各个代理方法中
11+
----
12+
13+
如下动图,只需注释/取消注释几行代码,即可隐藏/显示对应cell,无需在多个代理方法中修改。
1014

15+
![image](https://github.com/JC-Hu/JHCellConfig/blob/master/123.gif)
1116

1217
----
18+
## 使用
19+
1. 参照Demo,在tableVC基类BaseTableViewController中,声明一个管理cellConfig实例的可变数组如dataArray,并实现tableView的代理方法,使用cellConfig的相关方法来处理,实现“转接”。
20+
2. 在具体业务cell中,实现JHCellConfigProtocol协议中的方法,更新界面的-(void)updateContentWithCellConfig:和获取高度+(CGFloat)cellHeightWithCellConfig:方法,分别会在tableView的cellForRow和heightForRow时调用。
21+
3. 在具体业务vc中,根据页面需求,生成cellConfig实例并添加到dataArray中
22+
23+
```
24+
for (Comment *model in self.commentDataArray) {
25+
JHCellConfig *cellConfig = [JHCellConfig cellConfigWithCellClass:[AdvanceCommentCell class] dataModel:model];
26+
cellConfig.selectBlock = ^(JHCellConfig *selectCellConfig, UITableViewCell *selectCell) {
27+
// 点击事件
28+
};
29+
[self.dataArray addObject:cellConfig];
30+
}
31+
```
32+
4.如需刷新UI,更新dataArray后调用[tableView reloadData]
33+
34+
35+
----
36+
## Tips
37+
###### 关于Nib/Xib支持
38+
1. cell使用Nib(Xib),调用useNib或将isNib属性置为YES(默认用类名做nib文件名,如需自定义,可提前registerNib)
39+
40+
```
41+
JHCellConfig *cell = [JHCellConfig cellConfigWithCellClass:[ListTableViewCell class] dataModel:model].useNib;
42+
```
43+
44+
45+
###### 关于cell的生成(复用)
46+
1. 生成/复用cell时会自动调用更新UI的方法
47+
2. cell重用ID默认使用类名,想自定义可以使用cellConfig.reuseID属性
48+
49+
###### 关于cell的高度
50+
1. 建议仿照Demo,在Cell.m中实现+ (CGFloat)cellHeightWithCellConfig:协议方法,在此方法中返回cell高度
51+
2. 如cell为固定高度,也可使用cellConfig.constantHeight属性,会优先使用。(个人不建议,会导致代码风格不统一,不易阅读)
52+
3. 新增高度自动计算特性,可根据约束自动计算cell高度(参照FDTemplateLayoutCell)
53+
54+
```
55+
#import "JHCellConfig+DynamicHeight.h"
56+
// 返回cell高度
57+
+ (CGFloat)cellHeightWithCellConfig:(JHCellConfig *)cellConfig
58+
{
59+
// 自动计算
60+
return [cellConfig dynamicHeightCalResult]; // 简易方法,会自动缓存计算结果
61+
62+
// 完整方法
63+
// return [cellConfig dynamicHeightWithConfiguration:^(id cell) {
64+
// // 在此block可在高度计算前对cell进行操作,会在updateContentWithCellConfig:后执行
65+
// // do something
66+
// }
67+
// identifier:nil // 指定reuseId,默认为cell类名
68+
// usingCache:NO];// 可设置为不缓存计算结果
69+
70+
}
71+
```
72+
4. 使用高度自动计算时,如需不缓存高度,请使用上面的“完整方法”来计算高度,并且usingCache:传NO
73+
74+
###### 关于cell的点击事件
75+
1. 提供了selectBlock属性来处理点击事件,需在tableView didSelectCell时调用(建议参照Demo在基类处理)
1376

14-
如下动图,只需注释/取消注释几行代码,即可隐藏/显示对应cell,无需在多个代理方法中修改。
1577

16-
![image](https://github.com/JC-Hu/JHCellConfig/blob/master/123.gif)

0 commit comments

Comments
 (0)