实现表的点击后增加一行再次点击收缩

需要声明一个全局BOOL变量isOpen,记录当前cell的状态,声明一个NSInterge类型selectedIndex,记录选 择的cell的row。

在heightForRowAtIndexPath代理里面实现//选中状态返回的高度

if (indexPath.row == selectedIndex.row && selectedIndex != nil ) {

        if (isOpen == YES) {

//cell上的label高度自适应

CGSize size = [textStr sizeWithFont:[UIFont systemFontOfSize:14]

constrainedToSize:CGSizeMake(290, 1000) lineBreakMode:NSLineBreakByWordWrapping];

            CGFloat f = size.height;

               if (indexPath.row == [self.dataArr count]-1){

                   return 153.8 (f - 21);

               }

               return 155 (f - 21);

           }else{

return 67;

}

dLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view }



同样在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath

            //xxxxxx

     }else{

//收起 }

//不是自身 } else {

}

当点击时候在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

//将索引加到数组中

图⽚片时响应某⼀一函数

*)indexPath里实现一样的条件

if (indexPath.row == selectedIndex.row && selectedIndex != nil) {

//如果是展开

leView的滚动和键盘的隐藏

if (isOpen == YES

NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; //判断选中不同row状态时候

// if (self.selectedIndex != nil && indexPath.row != selectedIndex.row) { if (self.selectedIndex != nil && indexPath.row == selectedIndex.row) {

//将选中的和所有索引都加进数组中

indexPaths = [NSArray arrayWithObjects:indexPath,selectedIndex, nil];

        isOpen = !isOpen;

    }else if (self.selectedIndex != nil && indexPath.row != selectedIndex.row) {

        indexPaths = [NSArray arrayWithObjects:indexPath,selectedIndex, nil];

        isOpen = YES;

}

//记下选中的索引 self.selectedIndex = indexPath;

//刷新

    [tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值