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