1

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 は呼び出されません。どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

2

私は自分の質問に答えています。私のリストビューはそのコンテナよりも大きかったので、削除ボタンは単に画面外に隠されていました。手のひらに直面します。

どのイベントが発生するかについてのsblomの知識は、私を大いに助けてくれました。良い情報。

于 2012-07-26T18:31:19.250 に答える
1

私の知る限りではoverride CommitEditingStyle、これを機能させるために必要なのはそれだけです。行の 1 つをスワイプしたときに削除ボタンが表示されている限り、難しい部分がすべて機能していることを示す非常に強い兆候があります。スワイプしても削除ボタンが表示されない場合は、AWOL の原因を突き止めることに集中する必要があります。

技術的にCanEditRowは、 onUITableViewDataSourceEditingStyleForRowonであるため、両方が実際に呼び出されている場合は、結合されたプロパティにのみ割り当てられている、またはその代わりに割り当てられてUITableViewDelegateいるなどの問題を除外できます。UITableViewSourceDataSourceDelegateSource

于 2012-07-26T03:53:04.630 に答える