我有一个tableview,每个tableviewcell都有一个按钮。
我想在单击单元格按钮时更改当前单元格高度。
我该怎么做?谢谢!
答案 0 :(得分:0)
您应该将所有tableviewcell的高度存储在NSMutableArray
中。
当用户点击tableviewcell的按钮时,请更新height
中的NSMutableArray
。
之后reload
你的UITableView
。
希望这有帮助。
答案 1 :(得分:0)
创建一个包含所选单元格索引的数组
//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;
}
在didSelectRowAtIndexPath indexPath:NSIndexPath)函数中添加:
var selectedCellIndexs : NSMutableArray = []
现在在tableView(tableView:UITableView,heightForRowAtIndexPath indexPath:NSIndexPath)中,您需要做的就是检查单元格是否属于所选数组,以及它是否返回不同的值。
self.selectedCellIndexs.addObject(indexPath)
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
请记住,如果要取消选择单元格,则需要在单击单元格时从selectedCellIndexs中删除索引路径。
注意:这是用户选择单元格以更改高度时的基本工作流程。从按钮操作中获取单元格需要做更多的工作。
答案 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();
}