自定义tableviewcell按钮事件多次触发

时间:2017-04-01 18:14:19

标签: ios uitableview xamarin xamarin.ios tableviewcell

我有一个使用自定义tableview单元格的tableview。

当我们点击按钮时,事件会多次启动,但不会一直启动。

我观察到我的tableview

中的代码中的单元格永远不会为空
var cell = (MyCustomCell)tableView.DequeueReusableCell (MyCustomCell.Key);

我正在为tableview使用动态原型

我认为细胞可重用性和按钮甚至绑定存在问题,但我无法弄清楚它为什么会发生以及如何修复它?

更新

 public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)  
 {
//Getting the value from arrary as data source here
var cell = (MyCustomCell)tableView.DequeueReusableCell (MyCustomCell.Key);

if (cell == null) {
    cell = MyCustomCell.Create ();
}
button.TouchUpInside -= yourHandler; 
button.TouchUpInside += yourHandler;

//assigning the values to labels
return cell;
 }

无论是什么,我删除按钮事件并添加它然后它不应该多次触发事件

3 个答案:

答案 0 :(得分:0)

当重复使用单元格时,您的按钮事件处理程序可能会为同一单元格多次订阅。一个简单的解决方法是在订阅之前取消订阅:

button.TouchUpInside -= yourHandler;
button.TouchUpInside += yourHandler;

如果您使用lambda作为委托,请将其更改为方法委托

答案 1 :(得分:0)

只需在tableviewcell中的 awakefromnib 添加事件,或者在xcode中打开故事板并设置ibaction

    btn.TouchUpInside += yourHandler;

如果在重复使用单元格时想要做某事。在tableviewcell中重写 prepareforreuse

答案 2 :(得分:0)

if (btn.Tag == 0) {
    btn.Tag = 1;
    btn.TouchUpInside += yourHandler;
}