ビューコントローラの「-(void)setEditing:(BOOL)editinganimated:(BOOL)animated」メソッドで、現在の動作をオーバーライドします。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[self.tableView beginUpdates]; // Tell the table to begin updates to ensure that the following reloads and animations all happen at once
[super setEditing:editing animated:animated];
// set the table editing if you are not using UITableViewController
// reload any rows that may need updating for the new state
if (editing) {
// tell the table view to insert the editing rows
} else {
// tell the table view to remove the editing rows
}
[self.tableView endUpdates]; // commit the updates.
}
これで、View Controller(およびテーブルビュー)が編集モードに入ると、ViewControllerはテーブルに編集スポットに行を挿入するように指示します。テーブル自体も編集モードに移行します。
ビューコントローラが編集(およびそれを含むテーブルビュー)から移動すると、特定の編集を行っていた行が削除されます。
UITableViewControllerサブクラスを使用しておらず、UIViewController自体のサブクラスのみを使用している場合は、テーブルビューに同時に編集に移行するように指示する必要があることに注意してください。
[tableView setEditing:editing animated:animated];
行のリロードや挿入などが必要な場合、デリゲートメソッドとデータソースメソッドは、テーブルが編集モードであるかどうかを確認し、編集モードまたは非編集モードのいずれかに必要な行を返す必要があります。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView.editing) {
return /*editing count*/;
}
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView.editing) {
// return cells for the editing state.
}
// return cells based on the standard state.
}