tableviewcell的这贴状态和传值总结

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的这贴状态和传值总结的更多相关文章
- iOS tableViewCell侧滑改变收藏状态
/** * 图片素材 链接: http://pan.baidu.com/s/1mhi1sfQ 密码: w2wq */ #import <UIKit/UIKit.h> ...
- 17flutter中的路由/命名路由/命名路由传值/无状态组件传值/有状态组件传值。
main.dart import 'package:flutter/material.dart'; import 'package:flutter_demo/pages/Search.dart'; i ...
- 获取gridpanel 中 checkbox的状态
最近一直在用extjs前天框架来写作项目,很少用到这个框架,过程中遇到很多麻烦, 可能就是一个小的问题会困扰你很长时间, example: 我做一个报表,要获取gridpanel中 checkbox的 ...
- C#跨窗体传值的几种方法分析(很详细)
创建一个Winform窗体应用程序项目,然后添加一个Form2窗体. 在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就 ...
- vue组件之间传值方式解析
vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...
- tableview的cell点击和取消
#pragma mark - 选择cell: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPa ...
- React-Native 之 redux 与 react-redux
前言 本文 有配套视频,可以酌情观看. 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我讨论. 文中所有内容仅供学习交流之用,不可用于商业用途,如因此引起的相关法律法规责任,与我无关,如文中内 ...
- Vue全家桶(Vue-cli、Vue-route、vuex)
摘要 学习本篇之前要具备一定的vue基础知识,可以先看一下Vue基础(环境配置.内部指令.全局API.选项.内置组件) 1.Vue-cli Vue-cli是vue官方出品的快速构建单页应用的脚手架,这 ...
- vuex核心
最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是dat ...
随机推荐
- Shell编程基础
写之前我们先来搞清楚为什么要学shell,学习要有目的性shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题shell可以实现自动化管理,让系统管理员的工作变得容易.简单.高效shell脚 ...
- 36.在字符串中删除特定的字符[Delete source from dest]
[题目] 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”. ...
- iOS block 声明时和定义时的不同格式
今天写程序时,在实现一个block时总提示格式错误,对比api的block参数格式,没发现错误.后来查阅了资料,发现这两个格式是不同的! 具体格式见下方 NSString * (^testBlock) ...
- Windows下尝试PHP7提示丢失VCRUNTIME140.DLL的问题解决
前天PHP7.0.0正式版发布了,有一些比较好的改进,官方也说速度比php5.6快了两倍,性能上有了很大提升,并且也发布了从php5.x向php7迁移的问题,所以今后php网站迁移后能够大幅度的提升网 ...
- 【python-mysql】在ubuntu下安装python-mysql环境
1.先安装mysql sudo apt-get install mysql-server apt-get isntall mysql-client sudo apt-get install libmy ...
- css3学习总结9--CSS3过渡
CSS3 过渡 通过 CSS3,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果. 过渡属性 属性 描述 CSS transiti ...
- 【读书笔记】读《JavaScript高级程序设计-第2版》 - 函数部分
1. 定义 函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 对于函数 ...
- 【转】什麼是 Team Explorer Everywhere 2010 ?TFS 專用的 Eclipse 整合套件的安裝與設定
前言- 大家都知道 版本管控是一件很重要的事情!而且也知道分別有 VSS , SVN , TFS 等- 多數人都會覺得, .NET 的開發工具要用 VSS . TFS .SVN 而 Java 的 Ec ...
- JNDI 是什么
转自:http://blog.csdn.net/zhaosg198312/article/details/3979435 JNDI是 Java 命名与目录接口(Java Naming and Dire ...
- 【现代程序设计】homework-09
1. 了解Lambda的用法 计算“Hello World!”中 a.字母‘e’的个数 b. 字母‘l’的个数 首先: ISO C++ 标准的另一大亮点是引入Lambda表达式.语法如下: [](形参 ...