iOS 中UITableView的深理解
例如下图:首先分析一下需求: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的深理解的更多相关文章
- iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath(汇总)
iOS中UITableView的cell点击事件不触发didSelectRowAtIndexPath 首先分析有几种原因,以及相应的解决方法 1.UITableViewCell的userInterac ...
- iOS中UITableView分割线左侧顶齐
iOS 7开始UITableView的分割线不在从左侧边界开始了,而是默认空出了一段距离. 如果想要使用默认的分割线而且还要从左侧边界开始的话,有几种解决方式: 1.在tableView的代理方法中设 ...
- iOS中UITableView的一些问题思考
UITableview的数据源为什么是代理,而不是引用? 我的理解,一般情况下控制器会引用tableView, 数据源和代理方法都是tableView的一个若引用,出了“tableView.datas ...
- IOS中UITableView异步加载图片的实现
本文转载至 http://blog.csdn.net/enuola/article/details/8639404 最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个E ...
- iOS中UITableView的一些设置
不可滑动: ? 1 tableView.userInteractionEnabled = NO; 也可以在storyboard中的userInteractionEnable属性设置 显示导向箭头: ? ...
- iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新
你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...
- iOS中UITableView和UICollectionView的默认空态页
项目中想实现空态页风格统一控制的效果,就封装了一个默认空态页,使用的技术点有:1 方法替换 ,2 给分类(Category)添加属性. 我们知道,扩展(extension)可以给类添加私有变量和方法. ...
- ios中uitableview上拉刷新和下拉刷新(1)
在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介 ...
- IOS中UITableview中封装九宫格
第一步引入SecondNav目录即可 第二步引入头文件 #import "DIYTableView.h" #import "invoiceInfo.h" 实现协 ...
随机推荐
- 外部 Storage Provider【转】
如果 Kubernetes 部署在诸如 AWS.GCE.Azure 等公有云上,可以直接使用云硬盘作为 Volume,下面是 AWS Elastic Block Store 的例子: 要在 Pod 中 ...
- CGridCtrl 添加button (CGridCellButton类)
#ifndef __GRID_CELL_BUTTON__ #define __GRID_CELL_BUTTON__ #include "../GridCtrl_src/GridCell.h& ...
- 后端使用aes 加密
package com.util; /* import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;*/ import org.apa ...
- 覆盖.project
<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name ...
- XML--XML Schema Definition(二)
参考 http://www.w3school.com.cn/schema/index.asp XSD 简易元素 XML Schema 可定义 XML 文件的元素. 简易元素指那些只包含文本的元素.它不 ...
- Maven:程序包不存在,找不到符号
maven build时出现了以下的错误: 程序包xx.xx不存在,xxx找不到符号 原因一:DAO层依赖Service接口层的Bean类,在pom.xml中添加了对Service的依赖,也因此引入了 ...
- WOJ 1543 Array
还是聪哥给我讲的思路才知道的,起初我利用两两互质去求发现有问题,互质只是必要条件而非充分条件,后来还是用的标准思路 即其实最终只要保留最大的素数的幂即可,其他包含该素数幂但指数低的都不用了,这样就能保 ...
- 实验吧web--易--后台登陆
题目地址:http://www.shiyanbar.com/ctf/2036 这道题确实有点考研脑洞了. 1.首先,查看网页源代码(Ctrl+U),会发现一段PHP代码: $sql = "S ...
- rpm -qa -qc 查询安装过的软件
dpkg -l | grep ssh #Ubuntu rpm -qa |grep ssh #centos 通过ps -e |grep ssh命令查看是否启动.如果只有ssh-ag ...
- Momentum
11.6 Momentum 在 Section 11.4 中,我们提到,目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向.因此,梯度下降也叫作最陡下降(steepest desce ...