UITableView基本上是使用最多的一个控件,今天介绍封装后的 WMZTableView 省去写代理的时间
先直接上代码
GroupTableView() .wAutoCell(YES) .wMasonryConfig(self.view, ^(MASConstraintMaker *make) { make.edges.mas_equalTo(0); }, self.modelArr) .wStart();
不需要写cell,是不是简化了不少,比起写那么多的代理方法,最精简的可以只传frame和data即可。
效果图是我随便写的几个自定义的cell,别介意。
用法
可以看demo了解基本都很简单清晰
1 如果要在UITableViewCell里自己写样式 需调用wDealCell,大概如下
.wDealCell(^UITableViewCell *(NSIndexPath *indexPath, UITableView *tableView,id model) { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])]; } cell.textLabel.text = model; return cell; })
2 如果要用特殊式写法开启,这种写法不需要手动创建cell,只需要传model过去即可
.wAutoCell(YES)
这种方法就是传进去的数据源带的model一定要是wBaseModel或者集成它的类
还有自定义cell要带wBaseModel属性
3 如果tableview是需要用section的 比如多少个section和每个section多少rows 需用wSection,默认是row模式
就是section只有一个,row的个数是传进来的数组的个数
.wSection(YES)
而且传进的modelArr的格式需要是多个子数组组成的数组
@[@[],@[],@[]]
3 开启头视图和尾视图高度和视图的定制
//cell高度自定义 默认是用masonry的自动布局.wCellHeight(^NSInteger(NSIndexPath *indexPath, UITableView *tableView) { return indexPath.row == 0 ? 200:UITableViewAutomaticDimension;})//cell尾部高度自定义 默认0.01.wCellFootHeight(^NSInteger(NSInteger section, UITableView *tableView) { return 50; })//cell尾部视图自定义 默认无 .wCellFootView(^UIView *(NSInteger section, UITableView *tableView) { UIView *view = [UIView new]; view.backgroundColor = [UIColor yellowColor]; return view;})//cell头部高度自定义 默认0.01.wCellHeadHeight(^NSInteger(NSInteger section, UITableView *tableView) { return 50;})//cell头部视图自定义 默认无.wCellHeadView(^UIView *(NSInteger section, UITableView *tableView) { UIView *view = [UIView new]; view.backgroundColor = [UIColor redColor]; return view;})
4 最重要的一点
wStart属性 需放在最后才有效果,里面执行tableview的delegate和datasource方法
开始解释一下这个类的主要思路
1 我一开始的写法为什么看不到cell的定制的方法
数据源modelArr带的是自定义的wBaseModel,里面携带属性自定义cell类名
wBaseModel可以继承这个类然后自己自定义
wBaseModel *model = [wBaseModel new];//自定义cell的类名model.cellName = @"NornalCellOne";//带过去的参数 这些就不用说了model.labelName = @"NornalCellOne的文本NornalCellOne的文本";//带过去的参数 这些就不用说了model.imageName = [NSString stringWithFormat:@"%d.jpg