テーブルの編集モードを細かく設定する

テーブルビューを編集可能なモードにするには、

- (void)setEditing:(BOOL)editing 
	animated:(BOOL)animated;

で編集モードにすればいいのだけれど、例えばセクションが二つあって、一方は編集可、もう一方は編集不可な状態を作りたい場合には、UITableViewDataSourceの、

- (BOOL)tableView:(UITableView *)tableView 
	canEditRowAtIndexPath:(NSIndexPath *)indexPath;

で編集可能にするrowをコントロールすることができる。もちろんrowだけじゃなくて、NSIndexPathでsectionを取得してセクション毎に編集可/不可を切り分けちゃうのも可。例えば最初のセクションは編集不可、二つ目のセクションは編集可にするにはこんなコードでOK。テーブルを編集状態にしても最初のセクションは影響を受けない。

1
2
3
4
5
6
7
8
- (BOOL)tableView:(UITableView *)tableView 
	canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
	if ([indexPath section] == 0) {
		return NO;
	}
	return YES;
}

それにしてもCocoaのメソッド名って長いな。