我有一个自定义的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 ();

10-08 00:42