tableviewCell折叠状态1
//
// 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的更多相关文章
- tableviewCell折叠状态3
// // LHQDelegateModel.h // 11 - 投资管理 - 李洪强 // // Created by vic fan on 16/4/13. // Copyright © ...
- tableviewCell折叠状态2
// // LHQContentViewCell.h // 11 - 投资管理 - 李洪强 // // Created by vic fan on 16/4/12. // Copyright ...
- vim设置为indent折叠以后,每次打开文件时代码处于折叠状态,能改变吗?
vim设置为indent折叠以后,每次打开文件时代码处于折叠状态.即使这次编辑的时候把折叠展开,保存关闭文件,重新打开,所有的代码都又折叠起来了. 请问有没有默认不折叠的方法? 是否有可以一次展开所有 ...
- 取消TableViewCell选中状态的外观变化
tabelViewcell 使用Xib创建自定义外观的时候,在tableview选中的时候,cell的外观会发生变化,在定义Xib中如下图将选中的外观状态取消掉 也有其他选项,可以选择控制选中的时候的 ...
- tableviewcell折叠问题,(类似qq列表展开形式) 多个cell同时展开,OC版 和 Swift
之前没有用到过这块,但是今天看到,就试了试,但是发现,网上的有的方法不能多个cell同时展开,只能一个一个的展开. 我就尝试用用数组记录展开的标记的方法,功能实现了, 直接上代码: // // Vie ...
- iOS中 UITableViewRowAction tableViewcell编辑状态下的功能 UI技术分享
* tableView:editActionsForRowAtIndexPath: // 设置滑动删除时显示多个按钮 * UITableViewRowAction // 通过此类创建按钮 * 1. 我 ...
- tableviewcell的这贴状态和传值总结
01 控制器 1.1 定义一个可变数组存放数据,再定义一个可变数组来记录分组的折叠状态 @property(nonatomic)NSMutableArray *dataArr; //记录所有分组的折 ...
- jquery ztree 刷新后记录折叠、展开状态
ztree :http://www.ztree.me/v3/main.php 项目中用到了这个插件,刚好也有需求 在页面刷新后,保存开始的展开.折叠状态, 其实 dtree: http://www.d ...
- listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠
原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一 ...
随机推荐
- Mysql数据库中设置root密码的命令及方法
我们都知道通常PHP连接 Mysql都是通过root用户名和密码连接,默认情况下在Mysql安装时root初始密码为空,在安装使用PHP开源系统时,都需要填写连接Mysql数据库的用户名和密码,此时当 ...
- Android简易数据存储之SharedPreferences
Andorid提供了多种数据存储的方式,例如前面说到的“Android数据存储之SQLite的操作”是用于较复杂的数据存储.然而,如果有些简单的数据存储如果采用SQLite的方式的话会显得比较笨重.例 ...
- Java中泛型在集合框架中的应用
泛型是Java中的一个重要概念,上一篇文章我们说过,当元素存入集合时,集合会将元素转换为Object类型存储,当取出时也是按照Object取出的,所以用get方法取出时,我们会进行强制类型转换,并且通 ...
- DFS:Lake Counting(POJ 2386)
好吧前几天一直没更新博客,主要是更新博客的确是要耗费一点精力 北大教你数水坑 最近更新博客可能就是一点旧的东西和一些水题,主要是最近对汇编感兴趣了嘻嘻嘻 这一题挺简单的,没什么难度,简单深搜 #inc ...
- 【读书笔记】读《JavaScript模式》 - 函数复用模式之类式继承模式
实现类式继承的目标是通过构造函数Child()获取来自于另外一个构造函数Parent()的属性,从而创建对象. 1.类式继承模式#1 —— 默认方式(原型指向父函数实例) function Paren ...
- JPush Wiki
极光推送包含有通知与自定义消息两种类型的推送.本文描述他们的区别,以及建议的应用场景. 功能角度 通知 或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息. ...
- MVC学习笔记---MVC的处理管线
漫步ASP.NET MVC的处理管线 ASP.NET MVC从诞生到现在已经好几个年头了,这个框架提供一种全新的开发模式,更符合web开发本质.你可以很好的使用以及个性化和扩展这个框架,但这需要你 ...
- [转]Java 内部类笔记
内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权 ...
- 通过扩展让ASP.NET Web API支持W3C的CORS规范(转载)
转载地址:http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-04.html CORS(Cross-Origin Resource Shari ...
- EF架构~为EF DbContext生成的实体添加注释(T5模板应用)(转载)
转载地址:http://www.newlifex.com/showtopic-1072.aspx 最近新项目要用Entity Framework 6.x,但是我发现从数据库生成模型时没有生成字段的注释 ...