显示tableview后更改UITableViewCell的高度

时间:2015-09-01 05:57:38

标签: swift tableviewcell

我有一个tableview,每个tableviewcell都有一个按钮。

我想在单击单元格按钮时更改当前单元格高度。

我该怎么做?谢谢!

3 个答案:

答案 0 :(得分:0)

您应该将所有tableviewcell的高度存储在NSMutableArray中。

当用户点击tableviewcell的按钮时,请更新height中的NSMutableArray

之后reload你的UITableView

希望这有帮助。

答案 1 :(得分:0)

  1. 创建一个包含所选单元格索引的数组

    //form handler
    var form=document.getElementsByName('contact-form')[0];
    var errDis=document.getElementById('err-dis');
    
    form.onsubmit=function()
    {
        var err=false;
        var ele=form.elements;
        for(var i=0;i<ele.length;i++)
        {
            if(ele[i].className.indexOf('verified')==-1)
            {
                ele[i].errBlink();
                err=true; 
                continue;
            }
    
            if(ele[i].id=='mailer_email')
            {
                //console.log(ele[i].value);    
            }  
        }
    
        if(!err)
        {
            var conForm=new Form(form);
    
            conForm.submit;
        }
        else
        {
            errDis.innerHTML="Submit Again With Correct And Proper Information";   
        }
        return false;
    }  
    
    //Form Object
    
    
    Object.size=function(obj)
        {
            var size=0;
            for(var key in obj)
            {
                if(obj.hasOwnProperty(key)) size++;
            }
            return size;
        };
    
    
    
    var Form=function(form)
    {
        this.form=form;
        this.values=getFormValues();
        this.queryString=getQuery();
        this.submit=console.log(this.queryString);//for test
    }
    
    //returns associative array of name=value as key=pair value where name is value of name attribute
    function getFormValues()
    {
        var vallArr=new Array();
        var form_ele=this.form.elements;
        for(var i=0;i<form_ele.length;i++)
        {
            var ele=form_ele[i];
            vallArr[ele.name]=ele.value.trim();  
        }
        return vallArr;
    }
    
    
    function getQuery()
    {
        var valArr=this.values;
        console.log(this.values);
        var queryStr='';
        var len=Object.size(this.values);
        var i=0;
        for(var key in this.values)
        {
            queryStr+=key+'='+this.values[key];
            if(i<(len-1)) queryStr+='&';
            i++;
        }
        return queryStr;
    }
    
  2. 在didSelectRowAtIndexPath indexPath:NSIndexPath)函数中添加:

    var selectedCellIndexs : NSMutableArray = []
    
  3. 现在在tableView(tableView:UITableView,heightForRowAtIndexPath indexPath:NSIndexPath)中,您需要做的就是检查单元格是否属于所选数组,以及它是否返回不同的值。

    self.selectedCellIndexs.addObject(indexPath)
    tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
    
  4. 请记住,如果要取消选择单元格,则需要在单击单元格时从selectedCellIndexs中删除索引路径。

  5. 注意:这是用户选择单元格以更改高度时的基本工作流程。从按钮操作中获取单元格需要做更多的工作。

答案 2 :(得分:0)

全球宣布mutableArray。

var buttonPressedIndexPaths : NSMutableArray = [] 
cellForRowAtIndexPath()方法

中的

cell?.button.tag = indexPath.row
cell?.button.addTarget(self, action: "onButtonAction:", forControlEvents: UIControlEvents.TouchUpInside)

复制粘贴这些方法

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
       if(buttonPressedIndexPaths.containsObject(indexPath))
       {
        return 90;//button pressed cell height
    }
    else
       {
        return 44;//normal
    }
}

func onButtonAction(sender:UIButton)
{
    var indexPath : NSIndexPath = NSIndexPath(forRow: sender.tag, inSection: 0)//section may differ based on ur requirement
    if(buttonPressedIndexPaths.containsObject(indexPath))
    {
        buttonPressedIndexPaths.removeObject(indexPath)
    }
    else
    {
        buttonPressedIndexPaths.addObject(indexPath)
    }
    tableView.reloadData();
}