实现折叠的uitableviewcell效果思路:

效果就像QQ联系人列表那种,分几组,点击可以展开里面的子列表。一开始想到的可以使用tableview group的这种形式来做,今天介绍的不是使用group而是使用Plain来实现的,重点就在于实现section这块,我把section+cell看做一个整体的cell这样来处理,效果图如下:

整个cell是由一个View+tableview来组成的,上面的view可以当然head section ,下面的tableview可以当作是点击展开后的二级列表cell,基于这个只要处理点击后的高度计算就可以了。

项目里实现第一个head 和最后一个head是展开状态,其它只要点击时在展开的思路是:创建一个NSMutableArray来保存每个head section的状态,在

heightForRowAtIndexPath方法里根据状态来计算高度。

在viewdidload里记录初始状态,

定义一个数组:

_sectionStatus = [[NSMutableArrayalloc] init];

for (NSInteger i = 0; i <self.m_arr.count; i++) {if (i==0) {[_sectionStatus addObject:@1];else if (i==(self.m_arr.count-1)){[_sectionStatus addObject:@1];}else{[_sectionStatus addObject:@0];}
}
[self.m_tableView reloadData];

heightForRowAtIndexPath方法里如下:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{if ([_sectionStatus[indexPath.row] isEqualToNumber:@1]) {ProblemBodyModel *cellData = self.m_arr[indexPath.row];return cellData.m_Item2.count * 44 + 40;}else{return 40;}
}

点击head section方法如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{//是否展开BOOL status = [_sectionStatus[indexPath.row] boolValue];NSNumber *num = status? @0 :@1;[_sectionStatus replaceObjectAtIndex:indexPath.row withObject:num];[self.m_tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

点击展开后的cell方法,在当前VC里实现自定义cell里tableview的点击方法的一个代理就可以了,如下:

#pragma mark -- 展开cell的点击方法
- (void)tableViewCellDidSelectWithUrlID:(NSString *)urlId andCellType:(NSString *)type;
{}

到此就完成了。

实现折叠的uitableviewcell效果相关推荐

  1. VUE实现折叠展开动画效果

    VUE实现折叠展开动画效果 第一种情况:从中间向两边展开效果(水平缩放) .input-search {position: absolute;bottom: 8px;right: 0px;width: ...

  2. h5 手风琴效果_小程序-实现折叠面板-手风琴效果

    背景 无论是在小程序还是 h5 网页,折叠菜单,手风琴是一个非常常见的效果,如今也有很多现成的 UI 组件库已经实现了这一效果的,但有时候在写原生小程序时,单单就是一个折叠菜单效果,却要引入整个 UI ...

  3. vue实现侧边折叠菜单栏手风琴效果

    在我们做管理后台亦或是产品流程时,总是需要一个菜单栏或者导航栏来架起我们的产品架构,那么,如何用vue实现侧边折叠导航栏呢?接下来将一一介绍. 请先看效果演示图. 步骤1:先架构整个页面的布局,撰写h ...

  4. uni-app中文本过长-实现折叠与展开效果

    在实际的开发中,疑或是页面的预览中,或多或少都碰到过这样的情景,那就是文本的折叠与展开!近期在做一个项目,也遇到此情况,就将此顺便总结下来~ 一.先上效果 二.源码 <template>& ...

  5. 运用jQuery框架实现信息折叠卡片的效果

    1.效果分析 首先展示娱乐新闻第一项,其余新闻内容隐藏:给每个标题绑定单击事件:单机某标题后对其进行完整显示,同时其余新闻内容隐藏. 2.代码实现 <!DOCTYPE html> < ...

  6. Axure折叠与展开效果的实现

    http://www.masterchat.cn/article/20120501/217.html 视频教程 项目效果 点击表头,内容会展开或者收缩. 第一步,用矩形工具分别建立如下效果的图形 2, ...

  7. html鼠标滚动图片折叠,鼠标滑过图片3D折叠效果

    本教程我们将使用CSS3 3D transforms和jQuery来制作一个神奇的3D折叠效果. 在我们的demo中,图片在鼠标滑过的时候被折叠,空出来的部分将显示图片的一些信息.我们将创建一个放置图 ...

  8. html折叠 手风琴效果,jQuery制作效果超棒的手风琴折叠菜单

    拉风的jQuery制作的手风琴折叠菜单,效果非常不错!这里是之前版本的改进版,主要是jquery代码改进 演示图: main.js $(function(){ var tmp = null, $tit ...

  9. 绝对令人的惊叹的CSS3折叠效果

    为什么80%的码农都做不了架构师?>>>    日期:2012-11-30  来源:GBin1.com 折纸效果是最近触摸屏幕最流行的一个3D效果,工作原理很简单,只需要轻轻触摸屏幕 ...

最新文章

  1. c语言用链表的方式实现多项式加减,如何实现C语言单链表多项式相加的操作
  2. ios android rsa加密解密,IOS RSA加密解密
  3. 一些常见的名词解释(持续更新中)
  4. ssh mysql环境搭建_搭建一个MySQL高可用架构集群环境
  5. 别把机器学习和人工智能搞混了!
  6. batchsize设置为2的n次方_试卷中的页码设置
  7. C++ Primer 5th笔记(chap 16 模板和泛型编程)默认模板实参
  8. dojo/domReady! 中感叹号的作用
  9. 单表查询 多表查询 子查询
  10. 2019最新版QQ音乐api调用(原创)
  11. lede 内核 单 编_openwrt和lede有何区别?
  12. 多元统计分析及R语言建模(第四版)--第二章多元数据的数学表达式及R使用课后习题
  13. 人工智能 - NBA球星产生式系统
  14. GPS开发、定位修改
  15. 成都盛铭轩:详情页怎么设计
  16. WIFI基础知识-2.4GZH的信号为什么比5GHZ的信号好
  17. 功能强大的离线浏览器(1)
  18. 51单片机--实现跑马灯的两种办法
  19. 计算机专业985性价比,十所具性价比的985高校
  20. (二)人工智能安全问题:《人工智能安全白皮书(2018)》摘要

热门文章

  1. 基于Word2vec加TextRank算法生成中文新闻摘要(附python代码)
  2. 机器学习----矩估计方法
  3. Netty系列进阶篇一:阻塞和多路复用到底是个啥?
  4. android espresso 教程,Android Espresso入门到自动搞定
  5. 什么样的领导者,更能赢得人心?
  6. 你口口声声想要的自由
  7. 码农翻身之我是一个线程 --- 读书笔记
  8. 【Godot 插件】获取编辑器上所有的节点
  9. 华为笔试c语言,华为笔试算法题汇总
  10. 环信的使用以及注意事项!