//

//  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. 《ASP.NET1200例》<ItemTemplate>标签在html里面有什么具体的作用

    严格的来说 <ItemTemplate> 在html中无意义,他只是针对诸如 Repeater.DataList.GridView中的一个模板 至于里面的含义,你可以这样想,既然Repea ...

  2. Selenium测试Ajax程序(转)

    上周末参加了Qclub的百度技术沙龙,听了百度的孙景卫讲了Web自动化测试,讲的非常好,然后在小组讨论时又有幸座在了一起.我们讨论的一个内容,就是Ajax应用程序比原来的非Ajax程序更不易测试,这里 ...

  3. mybatis中的oracle和mysql分页

    这段时间一直在用mybatis+spring+springMVC的框架,总结点东西吧. mybatis的oracle分页写法: <?xml version="1.0" enc ...

  4. July 12th, Week 29th Tuesday, 2016

    When the traveler goes alone he gets acquainted with himself. 独自旅行可以让人更好地了解自己. With other's company, ...

  5. C++C++中构造函数与析构函数的调用顺序

    http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...

  6. 学习RSA公开密钥算法

    图为 RSA公开密钥算法的发明人,从左到右Ron Rivest, Adi Shamir, Leonard Adleman. 照片摄于1978年 (和讯财经原创) RSA加密算法是最常用的非对称加密算法 ...

  7. innobackupex err

    [root@12db etc]# innobackupex --user=root /dbback/ InnoDB Backup Utility v1.5.1-xtrabackup; Copyrigh ...

  8. 【ASP.NET MVC】个人复习整理

    1.为 Action 标注 Attribute 限制访问 public class HomeController : Controller { [HttpPost] public ActionResu ...

  9. 【转】一个不错的eclipse反编译插件

    [转]一个不错的eclipse反编译插件 在CSDN论坛上看到的一个不错的eclipse反编译插件,感觉看起来不错的样子,因而记下,原网址是:http://topic.csdn.net/u/20121 ...

  10. 微信api退款操作

    状况:证书加载进去,本地调试退款成功,然而发不到iis上却是不成功. 分析:定然是iis配置问题. 问题一:证书加载不进去,出现“内部错误” 解决:在iis中找到对应的应用连接池,右键高级设置,找到“ ...