Xamarin.ios “单触式”;轻扫以删除";承诺式不开火

Xamarin.ios “单触式”;轻扫以删除";承诺式不开火,xamarin.ios,Xamarin.ios,我正试图在uitableview中实现“滑动删除”功能。我已经学习了其他教程/论坛和扩展UITableViewSource。在该类中,我重写了以下方法: public override void CommitEditingStyle(UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath) { if (editingStyle == UITableViewCellEditi

我正试图在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方法,但从不调用CommittedItingStyle。任何帮助都将不胜感激。谢谢。

据我所知,您只需
覆盖
提交方式
即可实现此功能。只要你看到一个删除按钮出现在你刷你的一行,你有一个非常强烈的迹象表明,所有的棘手的部分都在工作。如果您在刷卡时没有看到“删除”按钮出现,那么我们应该集中精力找出它为何擅离职守


从技术上讲,
CanEditRow
位于
UITableViewDataSource
协议上,
EditingStyleForRow
位于
UITableViewDelegate
上,因此如果确实调用了这两个选项,我们可以排除这样的问题,例如您的
UITableViewSource
仅分配给
DataSource
Delegate
,而不是分配给组合的
Source
属性。

我在回答我自己的问题。原来我的listview比它的容器大,所以删除按钮只是隐藏在屏幕外。掌心


sblom关于哪些事件会被炒鱿鱼的知识对我帮助很大。很好的信息。

为了确保我理解,当您刷卡时,应该立即调用
CanEditRow
EditingStyleForRow
。然后iOS会为您绘制一个“删除”按钮。点击“删除”按钮后,应调用
committeditingstyle
。你看到删除按钮出现了吗?我没有看到删除按钮出现。但现在我很紧张,我只是没有把我的观点扩大到足够的范围,它正在被覆盖。等我有时间再查。谢谢你的好消息。那是我的问题。我的桌子比我的容器宽,所以它没有出现。脸掌。谢谢你的帮助。关于那件事。我应该把我的答案标记为答案吗?还是由我做一个新的作为答案?还是给你的打分数?我不知道协议,谢谢你的回复。我实际上没有看到删除按钮。是的,我相信我正确设置了Source属性,但这是一个很好的健全性检查。嘿,我正在尝试相同的操作,但我的按钮仍然不可见,之前我的tableview超出了范围,但现在我已经更正了它,仍然找不到问题