参考にしたのはこちら。
iPhone UITableView - Delete Button - Stack Overflow
要はこんな感じで「willTransitionToState」をオーバライドすれば良いと。
- (void)willTransitionToState:(UITableViewCellStateMask)state {
[super willTransitionToState:state];
if(state == UITableViewCellStateShowingDeleteConfirmationMask){
NSLog(@"delete button appear");
} else if(state == UITableViewCellStateDefaultMask){
NSLog(@"button disappear");
}
}
ただ、これはUITableViewCell内で実装しないと行けない訳です。例えば、削除ボタン出ているときにUITableViewControllerの編集ボタンを使用不可にしたいなんてときに困ってしまった訳で。
さらに参考になったのがこちら。
iphone - Reference from UITableViewCell to parent UITableView? - Stack OverflowカスタマイズしているUITableViewCellのヘッダに以下のように書いて。
// interface
UITableViewController *rootController;
// propery
@property (nonatomic, assign) UITableViewController *rootController;
実装ではこんな感じに。
@synthesize rootController;
- (void)willTransitionToState:(UITableViewCellStateMask)state {
[super willTransitionToState:state];
if(state == UITableViewCellStateShowingDeleteConfirmationMask){
rootController.navigationItem.leftBarButtonItem.enabled = NO;
} else if(state == UITableViewCellStateDefaultMask){
rootController.navigationItem.leftBarButtonItem.enabled = YES;
}
}
さらに、UITableViewControllerの方で参照させてあげればオッケーと。
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
[途中省略]
UIViewController *viewController = [[UIViewController alloc] initWithNibName: @"ConditionCell" bundle: nil];
normalCell = (ConditionCell *)viewController.view;
normalCell.rootController = self;
[途中省略]
}
しっかし、stackoverflowにはお世話になってばかりだなーと。