我有一个使用自定义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;
}
无论是什么,我删除按钮事件并添加它然后它不应该多次触发事件
答案 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;
}