//

//  LHQReportOnTheUseOfFundsCtrl.m

//  11 - 投资管理 - 李洪强

//  资金使用情况汇报

//  Created by vic fan on 16/4/12.

//  Copyright © 2016年 李洪强. All rights reserved.

//

#define SCREENW [UIScreen mainScreen].bounds.size.width

#define SCREENH [UIScreen mainScreen].bounds.size.height

#import "LHQReportOnTheUseOfFundsCtrl.h"

#import "LHQContentViewCell.h"

#import "LHQDelegateModel.h"

#import "NSString+Frame.h"

#import "LHQCustomHeader.h"

@interface LHQReportOnTheUseOfFundsCtrl ()<UITextViewDelegate>

@property(nonatomic)NSMutableArray *dataArr;

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

@property(nonatomic)NSMutableArray *closeArr;

@end

@implementation LHQReportOnTheUseOfFundsCtrl

- (void)viewDidLoad {

[super viewDidLoad];

self.title = @"资金使用情况汇报";

[self.tableView registerNib:[UINib nibWithNibName:@"LHQContentViewCell" bundle:nil] forCellReuseIdentifier:@"LHQContentViewCell"];

[self createData];

}

-(void)viewWillDisappear:(BOOL)animated

{

_dataArr = nil;

_closeArr = nil;

}

//数据

- (void)createData{

NSArray *tmpArray = @[@"2015年11月资金情况汇报",@"2015年10月资金情况汇报",@"2015年9月资金情况汇报",@"2015年8月资金情况汇报",@"2015年7月资金情况汇报",@"2015年6月资金情况汇报"];

//循环给标题赋值

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

LHQDelegateModel *model = [[LHQDelegateModel alloc] init];

model.titleName = tmpArray[i];

//循环给每一个cell里面的数据数组赋值

for (int j=0; j<4; j++) {

[model.contentArr addObject:@"13bcbduaib"];

}

//把模型model放到数据数组中

[self.dataArr addObject:model];

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

}

[self.tableView reloadData];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - Table view data source

//几组

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return _dataArr.count;

}

//几行

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

//如果是关闭状态

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

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

return 0;

}

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

return 1;

}

//每一行显示的内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

LHQContentViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LHQContentViewCell" forIndexPath:indexPath];

if (!cell) {

cell=[[LHQContentViewCell alloc] init];

}

LHQDelegateModel *model = _dataArr[indexPath.section];

[cell customedWithModel:model];

// cell.backgroundColor = [UIColor blueColor];

return cell;

}

//每一行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 223;

}

//定义段头

//头部高度

-(CGFloat )tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

return 60;

}

//头部视图

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{   //用btn当作段头的view

LHQDelegateModel *model = _dataArr[section];

LHQCustomHeader *headerView = [[[NSBundle mainBundle] loadNibNamed:@"LHQCustomHeader" owner:self options:nil] firstObject];

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

//indexOfObject 对象是否存在数组中,如果存在返回对象所在的下标

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;

UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(btnClick:)];

[headerView addGestureRecognizer:tapGR];

CALayer *layer = [headerView layer];

[layer setMasksToBounds:YES];//设置边框可见

layer.borderColor = [[UIColor lightGrayColor] CGColor];

[layer setBorderWidth:0.5];

//Border: 边境

return headerView;

}

//点击选择

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

// [self.delegate  sendLocation:[_dataArr[indexPath.section] objectAtIndex:indexPath.row]];

// [self dismissViewControllerAnimated:YES completion:nil];

}

//点击头部

-(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];

}

#pragma mark - textView的代理方法

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {

NSLog(@"url :%@",URL);

NSLog(@"111");

if ([[URL scheme] isEqualToString:@"username"]) {

NSString *username = [URL host];

NSLog(@"username :%@",username);

return NO;

}

return YES;

}

#pragma mark - 懒加载

-(NSMutableArray *)dataArr

{

if (!_dataArr) {

_dataArr = [[NSMutableArray alloc] init];

}

return _dataArr;

}

-(NSMutableArray *)closeArr

{

if (!_closeArr) {

_closeArr = [[NSMutableArray alloc] init];

}

return _closeArr;

}

@end

tableviewCell折叠状态1的更多相关文章

  1. tableviewCell折叠状态3

    // //  LHQDelegateModel.h //  11 - 投资管理 - 李洪强 // //  Created by vic fan on 16/4/13. //  Copyright © ...

  2. tableviewCell折叠状态2

    // //  LHQContentViewCell.h //  11 - 投资管理 - 李洪强 // //  Created by vic fan on 16/4/12. //  Copyright ...

  3. vim设置为indent折叠以后,每次打开文件时代码处于折叠状态,能改变吗?

    vim设置为indent折叠以后,每次打开文件时代码处于折叠状态.即使这次编辑的时候把折叠展开,保存关闭文件,重新打开,所有的代码都又折叠起来了. 请问有没有默认不折叠的方法? 是否有可以一次展开所有 ...

  4. 取消TableViewCell选中状态的外观变化

    tabelViewcell 使用Xib创建自定义外观的时候,在tableview选中的时候,cell的外观会发生变化,在定义Xib中如下图将选中的外观状态取消掉 也有其他选项,可以选择控制选中的时候的 ...

  5. tableviewcell折叠问题,(类似qq列表展开形式) 多个cell同时展开,OC版 和 Swift

    之前没有用到过这块,但是今天看到,就试了试,但是发现,网上的有的方法不能多个cell同时展开,只能一个一个的展开. 我就尝试用用数组记录展开的标记的方法,功能实现了, 直接上代码: // // Vie ...

  6. iOS中 UITableViewRowAction tableViewcell编辑状态下的功能 UI技术分享

    * tableView:editActionsForRowAtIndexPath: // 设置滑动删除时显示多个按钮 * UITableViewRowAction // 通过此类创建按钮 * 1. 我 ...

  7. tableviewcell的这贴状态和传值总结

    01  控制器 1.1 定义一个可变数组存放数据,再定义一个可变数组来记录分组的折叠状态 @property(nonatomic)NSMutableArray *dataArr; //记录所有分组的折 ...

  8. jquery ztree 刷新后记录折叠、展开状态

    ztree :http://www.ztree.me/v3/main.php 项目中用到了这个插件,刚好也有需求 在页面刷新后,保存开始的展开.折叠状态, 其实 dtree: http://www.d ...

  9. listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠

    原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一 ...

随机推荐

  1. windows添加和删除服务

    删除系统服务,记得一定要小心用.避免删错sc delete 服务名 加入服务: sc create 服务名 binPath= 路径 start= auto

  2. [Android Pro] android 混淆文件project.properties和proguard-project.txt

    参考文档:http://blog.csdn.net/xueyepiaoling/article/details/8202359转载自:http://glblong.blog.51cto.com/305 ...

  3. July 19th, Week 30th Tuesday, 2016

    The good seaman is known in bad weather. 惊涛骇浪,方显英雄本色. You can't be afraid to fail. It's the only way ...

  4. mongoose学习笔记2--增删改查1

    查询 之前我们的集合已经创建成功,我们就先来进行第一步操作 —— 查询. 查询分很多种类型,如条件查询,过滤查询等等,今天只学习了最基本的find查询. 举例: 1.find查询: obj.find( ...

  5. WampServer phpadmin apache You don't have permission to access

    1.Forbidden You don't have permission to access / on this server. 后来咨询了一下朋友(php高手),说修改一下php的配置文件http ...

  6. 一、HTML和CSS基础--HTML+CSS基础课程--第5部分

    第九章 CSS盒模型 元素分类
: 在讲解CSS布局之前,我们需要提前知道一些知识,在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的 ...

  7. 移动App该如何保存用户密码(转)

    原文地址:http://blog.csdn.net/hengyunabc/article/details/34623957 移动App该如何保存用户密码? 这个实际上和桌面程序是一样的. 先看下一些软 ...

  8. PHP CI框架学习笔记-分页实现程序

    视图html  <div id="body"> <form action="/index.php/search/index/" method= ...

  9. 在虚拟机环境下,电脑间拷贝配置好的伪分布式Hadoop环境,出现namenode不能启动的问题!

    原因:在原来的电脑上配置伪分布的时候,已经将hostname与IP绑定了,所以拷贝到别的电脑的时候,重新启动的时候就会失败,因为新的电脑的IP不见得就和原来的电脑的IP一样!因为在不同的网络中,在NA ...

  10. elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具

    Logstash是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索),您可以使用它.说到搜索,logstash带有一个web界面,搜索和展示所有日志.kibana 也 ...