FC2ブログ

UITableViewCellでの削除ボタン表示を検知したかった

参考にしたのはこちら。

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にはお世話になってばかりだなーと。
スポンサーサイト




iOS@2012/05/13 10:24   | 0 comments | 0 trackbacks |

コメント

コメントの投稿


秘密にする

«  | HOME |  »

いろいろ作ったり

プロフィール

icot

Author:icot
総合電気メーカで働く会社員でしたがいい年にも関わらずコンサルに転職。お酒、ジョギング、音楽、本、料理をこよなく愛してます。ここでは、日々感じた事を書き連ねるとともに、いろいろ実験してみたりしてます。
icotfeels[at]gmail.com

これまでに感じたこと