iOS 中UITableView的深理解
2016-07-19 22:21
465 查看
例如下图:首先分析一下需求:1.根据模型的不同状态显示不同高度的cell,和cell的UI界面。
2.点击cell的取消按钮时,对应的cell首先要把取消按钮隐藏掉,然后改变cell的高度。
根据需求先解决第一个需求,需要两步
当模型数据的属性的status =@"2",不显示取消按钮;status = @"1",显示取消按钮。
1.需要注意的是cell的重用在这里面互有一些影响,所以在自定义cell的模型的setter方法中,
在cell.m文件中写上模型setter方法的伪代码:
2.在控制器中计算cell高度对应代理的方法中
通过以上两步就可以解决第一个需求。
第二个需求:点击cell的取消按钮时,对应的cell首先要把取消按钮隐藏掉,然后改变cell的高度。
监听cell中按钮的方法有两种方法:第一定义button的tag值,在控制器中获取,然后监听方法,或者把button的属性写在cell.h中在cell的数据源代理中得到cell.btn 然后监听方法。
第二种方法是,在cell中创建代理方法,当点击cell中的button在cell中监听button被点击的方法,然后相应对应的代理,可以传参,如cell 和 对应model。
所以这里就用到了这一种方法。点击的时候把对应行cell的model传过去,然后改变model中的属性的状态,reload对应行的cell即可。
2.点击cell的取消按钮时,对应的cell首先要把取消按钮隐藏掉,然后改变cell的高度。
根据需求先解决第一个需求,需要两步
当模型数据的属性的status =@"2",不显示取消按钮;status = @"1",显示取消按钮。
1.需要注意的是cell的重用在这里面互有一些影响,所以在自定义cell的模型的setter方法中,
在cell.m文件中写上模型setter方法的伪代码:
if(status == 1){ // cell中添加对应的UIButton }else if(status == 2) { // 如果上一步创建在cell中的创建的按钮存在,那么移除对应的按钮。也就是置为nil,否则会出现重用 }
2.在控制器中计算cell高度对应代理的方法中
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { // 对应的模型显示对应的高度,所以首先需要得到对应的模型,获取模型可以根据cell里的属性模型获得,即通过自定义cell的对象方法,获得cell中模型的属性。 得到对应的属性后,根据对应的模型中属性的状态显示对应的高度。 // 这里需要知道获取cell,不仅是通过tableView对应的indexPath获得的,还可以通过自定义的cell的对象方法获得cell。 return ; }
通过以上两步就可以解决第一个需求。
第二个需求:点击cell的取消按钮时,对应的cell首先要把取消按钮隐藏掉,然后改变cell的高度。
监听cell中按钮的方法有两种方法:第一定义button的tag值,在控制器中获取,然后监听方法,或者把button的属性写在cell.h中在cell的数据源代理中得到cell.btn 然后监听方法。
第二种方法是,在cell中创建代理方法,当点击cell中的button在cell中监听button被点击的方法,然后相应对应的代理,可以传参,如cell 和 对应model。
所以这里就用到了这一种方法。点击的时候把对应行cell的model传过去,然后改变model中的属性的状态,reload对应行的cell即可。
相关文章推荐
- 103.项目视图分析工具Reveal集成使用教程
- Hbuilder MUI用原生js添加或移除class属性
- 小米2s 用线刷,刷回MIUI V5了
- (2016.12.2更新)CnCrypt加密U盘1.18,将U盘划分为普通盘和加密盘,支持与U盘启动盘共存
- UVA - 123 Searching Quickly
- if+while+for+continue+break
- hdu 1159 Common Subsequence(最长公共子序列问题)
- The remote SSH server rejected X11 forwarding request
- LeetCode Guess Number Higher or Lower
- Cannot assign requested address出现的原因及解决方案
- Description Resource Path Location Type Target runtime com.genuitec.runtime.generic.j2ee14 is not de
- break,continue,return
- UIMenuController的使用简介
- 扒一扒vue的数据追踪原理
- 11A - Increasing Sequence
- UITextField 点击事件 --- 不会触发键盘弹出,触发其他事件的实现。
- POJ 2533 Longest Ordered Subsequence
- 使用Reveal调试UI
- UVA 424-Integer Inquiry
- hdu 1005 Number Sequence