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

     

     



     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Java 深拷贝和浅拷贝 利用序列化实现深拷贝
    算法题005 剑指Offer面试题29 数组中出现次数超过一半的数字
    算法题003 斐波那契(Fibonacci)数列
    Android Sensors (4) 传感器使用最佳实践
    Android WebView使用基础
    Java 多线程(八) 线程状态图
    算法题006 判断两个链表是否相交
    Java 多线程(五) 多线程的同步
    算法题001 剑指Offer 面试题三:二维数组中的查找
    Android绘制基础及手写绘制实例
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5535063.html
Copyright © 2020-2023  润新知