UITableViewの編集モードへの移行方法メモ
iPhoneアプリでテーブルビューを表示する方法は、UITableViewControllerのサブクラスを使用する方法と、UIViewControllerのサブクラスでUITableViewDelegateとUITableViewDataSourceプロトコルを実装する方法の2通りがある。
前者の場合、ナビゲーションバーに編集ボタンを追加し、その編集ボタンをユーザが押すとテーブルビューが編集モードに自動的に入る(削除、追加等の編集時の処理は自分で実装する必要有)。
- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.rightBarButtonItem = self.editButtonItem; }
一方、後者のようにUITableViewDelegateとUITableViewDataSourceプロトコルを実装してテーブルビューを表示している場合、上記のコードだけでは編集ボタンはナビゲーションバーに表示されるものの、そのボタンを押しても自動的には編集モードに入らない。
これはUITableViewControllerを継承していないため、UITableViewのsetEditingメソッドが呼ばれていない事が原因と思われる。
そこで、以下のようなコードを追加し、UITableViewのsetEditingメソッドを手動で呼び出す事で、編集モードへ移行させる事が出来た。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; [tableView setEditing:editing animated:animated]; }