点击UITableView的cell展开收缩

转载 2016年08月30日 15:41:55
在项目中有个需求,点击表视图的单元格展开,再点击另外一个单元格或者本身又收缩,经过一段时间尝试,实现了该功能,现在记录分享总结下。
  首先要理解UITableView代理方法调用的先后顺序。
  当初始化UITableView后,代理回调顺序如下
  
1://返回cell个数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  2://返回每行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  3://请求数据元代理为tableView插入需要的cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  4://监听点击的cell
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath



  需要声明一个全局BOOL变量isOpen,记录当前cell的状态,声明一个NSInterge类型selectedIndex,记录选择的cell的row。


  在heightForRowAtIndexPath代理里面实现//选中状态返回的高度
 
 if (indexPath.row == selectedIndex.row && selectedIndex != nil ) {
  if (isOpen == YES) {


  
//cell上的label高度自适应
  CGSize size = [textStr sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(290, 1000) lineBreakMode:NSLineBreakByWordWrapping];
  CGFloat f = size.height;
 
  if (indexPath.row == [self.dataArr count]-1){
 
  return 153.8+(f - 21);
  }
 
  return 155+(f - 21);
 
  }else{
 
  return 67;
  }
 
  }




同样在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath里实现一样的条件

  
if (indexPath.row == selectedIndex.row && selectedIndex != nil) {
  //如果是展开
  if (isOpen == YES) {
  //xxxxxx
  }else{
  //收起
  }
 
  //不是自身
  } else {
  }


当点击时候在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//将索引加到数组中
  NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
  //判断选中不同row状态时候
  //  if (self.selectedIndex != nil && indexPath.row != selectedIndex.row) {
  if (self.selectedIndex != nil && indexPath.row == selectedIndex.row) {
  //将选中的和所有索引都加进数组中
//  indexPaths = [NSArray arrayWithObjects:indexPath,selectedIndex, nil];
  isOpen = !isOpen;
 
  }else if (self.selectedIndex != nil && indexPath.row != selectedIndex.row) {
  indexPaths = [NSArray arrayWithObjects:indexPath,selectedIndex, nil];
  isOpen = YES;
 
  }
 
  //记下选中的索引
  self.selectedIndex = indexPath;
 
  //刷新
  [tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
}


经过不断调试,终于实现了点击任意一个cell展开收缩效果







转自:http://m.blog.sina.com.cn/s/blog_6b8c3d7a0101apmd.html#page=4


iOS tableview cell的展开收缩

#import "ViewController.h" @interface ViewController (){     NSMutableArray *_allArray;//创建一个数据源数组...
  • baidu_31326173
  • baidu_31326173
  • 2016年06月18日 16:05
  • 4478

OCiOS开发:表格视图实现腾讯好友列表展开收缩效果

前言这几天刚刚给学生讲到了表格视图的使用,有学生问我,如果要实现类似于腾讯好友列表展开收缩的效果该怎么实现呢?以前我写过有关这样效果的demo,但是一直没有发表成文,今天刚好有时间,于是写出来,分享给...
  • Hierarch_Lee
  • Hierarch_Lee
  • 2016年01月20日 23:45
  • 4162

点击UITableView的cell展开收缩

在另外一个博客中,懒得粘贴过来了,直接上地址好了 51CTO的地址: http://10136044.blog.51cto.com/10126044/1691383...
  • NoPolun_iOS
  • NoPolun_iOS
  • 2017年01月03日 23:57
  • 1406

点击UITableView的cell展开收缩

[转载]点击UITableView的cell展开收缩 原文地址:点击UITableView的cell展开收缩作者:天风     在项目中有个需求,点击表视图的单元格展开,再点击...
  • u011862058
  • u011862058
  • 2015年01月26日 09:43
  • 1510

【iOS】UITableView中section的展开和收起

手机QQ大家都玩过。我们可以对好友进行分组,点击分组可以展开查看里面的成员,再次点击就可以收起分组。那么这个是怎么实现的?之前做项目的时候也使用过,最近有时间整理,就把之前是怎么操作的记录下来。在写之...
  • zhuming3834
  • zhuming3834
  • 2015年10月24日 12:51
  • 6768

点击UITableView的cell展开收缩

在项目中有个需求,点击表视图的单元格展开,再点击另外一个单元格或者本身又收缩,经过一段时间尝试,实现了该功能,现在记录分享总结下。    首先要理解UITableView代理方法调用的先后顺序。 ...
  • wangkai598
  • wangkai598
  • 2015年07月21日 21:09
  • 1034

TableView分组显示数据和展开收缩的drop效果

  • 2012年10月30日 13:07
  • 53KB
  • 下载

UITableView的折叠收缩和QQ好友分组效果

可折叠展开的tableView,QQ好友分组列表demo下载地址https://github.com/zhengwenming/ExpandTableView 原理分析:这个可以折叠的table,我...
  • wenmingzheng
  • wenmingzheng
  • 2016年01月08日 15:54
  • 7371

UITableViewCell的展开与收缩功能实现分析

前几天看到一份实现了TableViewCell收缩展开的源码,感觉实现方式很独特,对以后我做其他效果也算是提供了一种新思路,特此记录下来。 他通过代码内更改约束的优先级来实现不同布局。 图中可...
  • NSNirvana
  • NSNirvana
  • 2015年09月30日 11:02
  • 3020

UITableView cell的展开与收起(伴随指示箭头)

如果想获得更好的阅览体验,请移步简书1.第一步//创建数据源并创建一个记录是否展开的数据源 @property (nonatomic, strong)NSMutableArray *dataArray...
  • C_calary
  • C_calary
  • 2017年05月26日 15:37
  • 741
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:点击UITableView的cell展开收缩
举报原因:
原因补充:

(最多只允许输入30个字)