我有一个自定义的UITableViewCell
,其中包含UIButton
。单击按钮时,将多次调用click事件。这是我正在使用的代码。
CustomCell.cs
public static CustomCell Create ()
{
return ( CustomCell ) Nib.Instantiate ( null , null ) [0];
}
internal void BindData()
{
//some code
btnSave.TouchUpInside+= (object sender, EventArgs e) =>
{
Console.WriteLine("button clicked");
};
}
TableSource.cs
public override UITableViewCell GetCell (UITableView tableView,NSIndexPath indexPath)
{
CustomCell cell = tableView.DequeueReusableCell ( CustomCell.Key ) as CustomCell ?? CustomCell.Create ();
cell.BindData ();
return cell;
}
知道为什么会这样吗?我可以正确地重复使用细胞吗?
谢谢。
最佳答案
我相信您不应该每次都仅在创建新单元格时调用cell.BindData()。否则,您将在每次重复使用单元时运行它。
分离绑定数据的东西...拔出触摸按钮
internal void BindData()
{
//some code
}
然后把按钮的东西放到这里
var cell = tableView.DequeueReusableCell(CustomCell.Key) as CustomCell;
if (cell == null)
{
cell = CustomCell.Create ()
cell.btnSave.TouchUpInside+= (object sender, EventArgs e) =>
{
Console.WriteLine("button clicked");
};
}
cell.BindData ();