我正在尝试在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。任何帮助将非常感激。感谢。
答案 0 :(得分:2)
我正在回答我自己的问题。事实证明我的listview比它的容器大,所以删除按钮只是隐藏在屏幕外。面掌。
sblom知道哪些事件在帮助了我很多时被解雇了。好消息。
答案 1 :(得分:1)
据我所知,仅必须override
CommitEditingStyle
才能使其发挥作用。只要您在滑动其中一行时看到删除按钮,就会非常强烈地表明所有棘手的部分都在工作。如果您在滑动时没有看到删除按钮,我们应该专注于弄清楚为什么它是AWOL。
从技术上讲,CanEditRow
位于UITableViewDataSource
协议上,EditingStyleForRow
位于UITableViewDelegate
上,因此,如果这两个确实被调用,我们可以排除诸如您的UITableViewSource
仅被分配到DataSource
或Delegate
,而不是分配给Source
合并的属性。