tableviewcell的这贴状态和传值总结

翟昊明
2023-12-01

 

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 文件中懒加载内容数组

 

 



 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/LiLihongqiang/p/5535063.html

 类似资料: