2

テーブルビューの各セルにジェスチャレコグナイザーがあり、1つをスワイプすると、デリゲートがテーブルビューに通知するようにします(または、デリゲートなしでより良い方法がある場合は)、削除できるようにします。しかし、セルをindexPath削除できるようにするにはどうすればよいのでしょうか。

4

3 に答える 3

7

デリゲートの使用は、これに使用するのに適したパターンです。カスタム セル クラスは、プロトコルとデリゲート プロパティを定義する必要があります。ビュー コントローラーはセルのデリゲートとして自身を設定する必要があり、ビュー コントローラーはセルのプロトコル メソッドを実装する必要があります。プロトコル メソッドのパラメータの 1 つがセルであることを確認してください。

ビュー コントローラーは、必要に応じてセルのインデックス パスをテーブル ビューに問い合わせることができます。セルがそのインデックス パスを知る必要はありません。行とセクションは追加/削除できるため、いつでも変更される可能性があるため、セルのインデックス パスを通知するのは不適切な形式です。

于 2013-05-02T22:01:04.697 に答える
1

セルにデリゲートを呼び出してselfから、コントローラーでUITableView'sを使用indexPathForCell:して適切なインデックス パスを見つけます。

パスを取得したらdeleteRowsAtIndexPaths:withRowAnimation:、セルを削除するために使用できます。データソースにも対応する変更を加えることを忘れないでください!

[self.tableView beginUpdates]
[someBackingArray removeObject:someModelObject];

[self.tableView deleteRowsAtIndexPaths:@[theIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
于 2013-05-02T21:59:44.950 に答える