例如下图:首先分析一下需求:1.根据模型的不同状态显示不同高度的cell,和cell的UI界面。

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即可。

iOS 中UITableView的深理解的更多相关文章

  1. iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath(汇总)

    iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath 首先分析有几种原因,以及相应的解决方法 1.UITableViewCell的userInterac ...

  2. iOS中UITableView分割线左侧顶齐

    iOS 7开始UITableView的分割线不在从左侧边界开始了,而是默认空出了一段距离. 如果想要使用默认的分割线而且还要从左侧边界开始的话,有几种解决方式: 1.在tableView的代理方法中设 ...

  3. iOS中UITableView的一些问题思考

    UITableview的数据源为什么是代理,而不是引用? 我的理解,一般情况下控制器会引用tableView, 数据源和代理方法都是tableView的一个若引用,出了“tableView.datas ...

  4. IOS中UITableView异步加载图片的实现

    本文转载至 http://blog.csdn.net/enuola/article/details/8639404  最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个E ...

  5. iOS中UITableView的一些设置

    不可滑动: ? 1 tableView.userInteractionEnabled = NO; 也可以在storyboard中的userInteractionEnable属性设置 显示导向箭头: ? ...

  6. iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新

    你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...

  7. iOS中UITableView和UICollectionView的默认空态页

    项目中想实现空态页风格统一控制的效果,就封装了一个默认空态页,使用的技术点有:1 方法替换 ,2 给分类(Category)添加属性. 我们知道,扩展(extension)可以给类添加私有变量和方法. ...

  8. ios中uitableview上拉刷新和下拉刷新(1)

    在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介 ...

  9. IOS中UITableview中封装九宫格

    第一步引入SecondNav目录即可 第二步引入头文件 #import "DIYTableView.h" #import "invoiceInfo.h" 实现协 ...

随机推荐

  1. 面向对象-接口(interface)实战案例

    面向对象-接口(interface)实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口(interface)概述 1>.接口的语法格式 接口时抽象类的一种特殊体 ...

  2. 【Android】家庭记账本手机版开发报告三

    一.说在前面 昨天 对第一天的框架结构进行了四方面的完善 今天 对界面显示和逻辑结构进行完善 问题 无 二.界面展示完善 1.使用可回收的列表recyclerView展示账单的信息,并设置数据项为卡片 ...

  3. UVA - 1001 Say Cheese(奶酪里的老鼠)(flod)

    题意:无限大的奶酪里有n(0<=n<=100)个球形的洞.你的任务是帮助小老鼠A用最短的时间到达小老鼠O所在位置.奶酪里的移动速度为10秒一个单位,但是在洞里可以瞬间移动.洞和洞可以相交. ...

  4. 大数据高可用集群环境安装与配置(08)——安装Ganglia监控集群

    1. 安装依赖包和软件 在所有服务器上输入命令进行安装操作 yum install epel-release -y yum install ganglia-web ganglia-gmetad gan ...

  5. Day1-T4

    原题目 Describe:注意是“两次及以上”而不是“两种及以上”!! code: #include<bits/stdc++.h> using namespace std; int k,m ...

  6. MySQL 字符集和校验规则工作流程

    MySQL 字符集和校验规则工作原理 字符编码相关参数 数据流中的转码过程 校验规则 Tips:字符集和校验规则总是相伴的 一 从简单的建库语句开始 CREATE DATABASE [IF NOT E ...

  7. 前台图片Canvas压缩上传小结

    需求来源:之前有个提交审核表单的业务,表单中含有大量附件图片,大约有20多张吧,为了省事,采用的同步上传,一次需要上传很多照片,本来单张图片限制为200KB,这样子总图片大小约为5MB左右,想想也可以 ...

  8. Java算法练习——两数之和

    题目链接 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利 ...

  9. Ubuntu hive 安装过程中遇到的一些问题

    环境:Ubuntu14.04 Hadoop3.2.0 MySQL5.7 hive2.3.6 安装步骤:安装hive.MySQL并进行配置 安装过程参照:Ubuntu安装hive,并配置mysql作为元 ...

  10. eclipse JSP学习遇到的问题,获取页面中文值时出现乱码

    性别:男<input type="radio" name="sex" value="男" /> String sex =requ ...