Monotouch“滑动删除”CommitEditingStyle不会被触发

时间:2012-07-25 23:47:34

标签: xamarin.ios

我正在尝试在uitableview中实现“滑动删除”功能。我已经关注了其他教程/论坛并扩展了UITableViewSource。在该课程中,我已经覆盖了以下方法:

public override void CommitEditingStyle(UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
{
   if (editingStyle == UITableViewCellEditingStyle.Delete)
   {
       tableItems.RemoveAt(indexPath.Row);
       tableView.DeleteRows(new [] { indexPath }, UITableViewRowAnimation.Fade);
   }
}

public override UITableViewCellEditingStyle EditingStyleForRow(UITableView tableView, NSIndexPath indexPath)
{
    return UITableViewCellEditingStyle.Delete;
}

public override bool CanEditRow(UITableView tableView, NSIndexPath indexPath)
{
    return true;
}

我相信这些是我应该需要的唯一方法。但是,当我执行滑动手势时,会调用CanEditRow和EditingStyleForRow方法,但从不调用CommitEditingStyle。任何帮助将非常感激。感谢。

2 个答案:

答案 0 :(得分:2)

我正在回答我自己的问题。事实证明我的listview比它的容器大,所以删除按钮只是隐藏在屏幕外。面掌。

sblom知道哪些事件在帮助了我很多时被解雇了。好消息。

答案 1 :(得分:1)

据我所知,必须override CommitEditingStyle才能使其发挥作用。只要您在滑动其中一行时看到删除按钮,就会非常强烈地表明所有棘手的部分都在工作。如果您在滑动时没有看到删除按钮,我们应该专注于弄清楚为什么它是AWOL。

从技术上讲,CanEditRow位于UITableViewDataSource协议上,EditingStyleForRow位于UITableViewDelegate上,因此,如果这两个确实被调用,我们可以排除诸如您的UITableViewSource仅被分配到DataSourceDelegate,而不是分配给Source合并的属性。