01  控制器

1.1 定义一个可变数组存放数据,再定义一个可变数组来记录分组的折叠状态

@property(nonatomic)NSMutableArray *dataArr;

//记录所有分组的折叠状态

@property(nonatomic)NSMutableArray *closeArr;

1.2 加载xib

1.3

-(void)viewWillDisappear:(BOOL)animated

{

_dataArr = nil;

_closeArr = nil;

}

1.4写一个创建数据createData的方法

定义一个数组用来存放标题

for循环给标题赋值

初始化LHQDelegateModel

把刚刚定义好的每一项标题的数组的数据赋值给model的标题的属性

在这个for循环中再写一个for循环,给cell中的每一个数据的数组进行赋值

把模型model放到一开始定义的可变数组中

然后

[self.closeArr addObject:[NSNumber numberWithBool:YES]];

把YES存到之前定义的"记录分组的折叠状态的可变数组"中

数据院方法

1.5 返回组数   return   self._dataArr.count;

1.6返回行数

//如果是关闭状态

//objectAtIndex:(NSUInteger)index : 获取数组中索引为index的元素

if ([[_closeArr objectAtIndex:section] boolValue]) {

return 0;

}

// 如果是打开的状态--> 返回每一组只有一行

return 1;

1.7 每一行显示的内容

通过id

LHQContentViewCell

来初始化LHQContentViewCell

初始化LHQDelegateModel并且用数组中的每一组给model赋值

[cell customedWithModel:model];

把model传到这个cell中 的方法中的model

1.8每一行的高度

1.9设置头部高度

1.10 设置头部视图

初始化LHQDelegateModel,并且用dataArr每一组进行赋值

加载xibLHQCustomHeader

定义一个变量是打开的状态

//定义一个变量是打开的状态

NSInteger numx = [self.closeArr indexOfObject:[NSNumber numberWithBool:0]];

//如果组是打开的状态

if (numx == section) {

//设置箭头为向上的

[headerView setImageWithName:@"Snip20160413_9"];

}else{

//否则还是原来的

[headerView setImageWithName:@"Snip20160413_8"];

}

//给headView绑定tag值

headerView.tag = section + 400;

//给标题赋值

headerView.titleLable.text = model.titleName;

给headerView添加手势

写一个点击头部的方法

//点击头部

-(void)btnClick:(UITapGestureRecognizer *)tapGR

{

//找到对应的折叠状态

//此时是关闭状态

BOOL isClose = [[_closeArr objectAtIndex:tapGR.view.tag-400] boolValue];

//(要点: 点击某一行cell,如果当前cell的状态是关闭的,点击的时候就把当前的cell切换到打开的状态,同时把其他所有的cell的状态都关闭

// 如果当前的cell状态是打开的,点击的时候,把所有的状态改成关闭状态)

//-----------------------------------------------------------

for (int i=0; i<6; i++) {

//如果点击的tag值在范围之内

if (i == tapGR.view.tag - 400) {

//当前点击的cell的索引正好是关闭的那个状态,什么都不做

//如果打开的是当前的某一个cell,什么都不做

//如果是其他的,让其他的关闭

}else{

//没打开的状态

[self.closeArr replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:YES]];

}

}

//----------------------------------------------------------

//修改折叠状态

//把关闭的那个索引的cell变成打开的状态

[_closeArr replaceObjectAtIndex:tapGR.view.tag-400 withObject:[NSNumber numberWithBool:!isClose]];

[self.tableView reloadData];

}



2   LHQContentViewCell

2.1 声明一个方法

-(void)customedWithModel:(LHQDelegateModel *)model;

2.2给属性连线

@property (weak, nonatomic) IBOutlet UITextView *content;

//借款额度已使用

@property (weak, nonatomic) IBOutlet UILabel *account;

//当月使用

@property (weak, nonatomic) IBOutlet UILabel *Income;

//能否按时还息

@property (weak, nonatomic) IBOutlet UILabel *YESOrNo;

2.3 实现这个方法

-(void)customedWithModel:(LHQDelegateModel *)model

{

NSArray *modelArr = model.contentArr;

_account.text = modelArr[0];

_Income.text = modelArr[1];

_YESOrNo.text = modelArr[2];

_content.text = modelArr[3];

}



3  LHQDelegateModel

3.1 定义 一个标题的字符串 和一个存放内容的可变数组

//标题

@property(nonatomic)NSString *titleName;

//存放内容的数组

@property(nonatomic)NSMutableArray *contentArr;

3.3 在.m 文件中懒加载内容数组

tableviewcell的这贴状态和传值总结的更多相关文章

  1. iOS tableViewCell侧滑改变收藏状态

                 /** * 图片素材 链接: http://pan.baidu.com/s/1mhi1sfQ 密码: w2wq */ #import <UIKit/UIKit.h> ...

  2. 17flutter中的路由/命名路由/命名路由传值/无状态组件传值/有状态组件传值。

    main.dart import 'package:flutter/material.dart'; import 'package:flutter_demo/pages/Search.dart'; i ...

  3. 获取gridpanel 中 checkbox的状态

    最近一直在用extjs前天框架来写作项目,很少用到这个框架,过程中遇到很多麻烦, 可能就是一个小的问题会困扰你很长时间, example: 我做一个报表,要获取gridpanel中 checkbox的 ...

  4. C#跨窗体传值的几种方法分析(很详细)

    创建一个Winform窗体应用程序项目,然后添加一个Form2窗体. 在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就 ...

  5. vue组件之间传值方式解析

    vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...

  6. tableview的cell点击和取消

    #pragma mark - 选择cell: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPa ...

  7. React-Native 之 redux 与 react-redux

    前言 本文 有配套视频,可以酌情观看. 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我讨论. 文中所有内容仅供学习交流之用,不可用于商业用途,如因此引起的相关法律法规责任,与我无关,如文中内 ...

  8. Vue全家桶(Vue-cli、Vue-route、vuex)

    摘要 学习本篇之前要具备一定的vue基础知识,可以先看一下Vue基础(环境配置.内部指令.全局API.选项.内置组件) 1.Vue-cli Vue-cli是vue官方出品的快速构建单页应用的脚手架,这 ...

  9. vuex核心

    最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是dat ...

随机推荐

  1. javascript动态添加form表单元素

    2014年11月7日 17:10:40 之前写过几篇类似的文章,现在看来比较初级,弄一个高级的简单的 情景: 后台要上传游戏截图,截图数量不确定,因此使用动态添加input节点的方法去实现这个效果 主 ...

  2. codeforces B. Fixed Points 解题报告

    题目链接:http://codeforces.com/problemset/problem/347/B 题目意思:给出一个包含n个数的排列a,在排列a中最多只能作一次交换,使得ai = i 这样的匹配 ...

  3. [Android Pro] 内容提供者ContentProvider的基本使用

    一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.ContentProvider为存储和获取数据提 ...

  4. duapp获取mysql用户名密码等等……

    duapp呵呵,又是云!比起新浪,这个免费.下面是:(你懂的) <?php/*数据库名称写自己创建的*/$dbname = 'rjKagJvksJdyUKfyPfjY'; /*从环境变量里取出数 ...

  5. 如何给Eclipse中添加库(jar包)

    折腾Eclipse时,经常会遇到这种情况: 缺少某个库,找到之后,需要将该库,jar包,加入到当前项目,使得代码中的import xxx得以正常导入. 举例: [已解决]Eclipse的java代码出 ...

  6. Oracle 日常应用和操作笔记

    简单整理oracle日常应用笔记. 1.采用excel表格中的数据直接粘贴数据库记录中,默认会在后面加一个空格“”,操作完成后一定要记得对空格匹配然后修改一下. 2.查询数据库里的所有表结构, 采用s ...

  7. Java 对时间和日期的相关处理

    1. 获取当前系统时间和日期并格式化输出 import java.util.Date; import java.text.SimpleDateFormat; public class NowStrin ...

  8. 关于setTimeout的妙用前端函数节流

    最近在某团队忙于一个项目,有这么一个页面,采用传统模式开发(吐槽它为什么不用React),它的DOM操作比较多,然后性能是比较差的,尤其当你缩放窗口时,可怕的事情发生了,出现了卡顿,甚至浏览器瘫痪.为 ...

  9. 利用SQL语句查询数据库中所有表

    Oracle: SELECT * FROM ALL_TABLES;系统里有权限的表 SELECT * FROM DBA_TABLES; 系统表 SELECT * FROM USER_TABLES; 当 ...

  10. 5.AsyncHttp、post

    httpClient // 网络访问请求 new Thread(new Runnable() { @Override public void run() { String url = "ht ...