OK、ディスカッションに基づいてこの回答を編集しました。
UITableViewCell をサブクラス化すると仮定すると、実装で次のコードを使用します。
(例: CustomTableCell.m)
#define MyTableCellHighlightedNotification @"MyTableCellHighlighted"
- (id)initWithStyle:(UITableViewCellStyle)style
reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self){
// Your custom initialization here
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(tableCellHighlighted:)
name:MyTableCellHighlightedNotification
object:nil];
}
}
- (void) dealloc
{
[[NSNotifcationCenter defaultCenter] removeObserver:self];
// ...Release ivars...
[super dealloc]
}
- (void) setHighlighted:(BOOL) highlighted
{
// Default behaviour (defer to super)
[super setHighlighted:highlighted];
if(highlighted == YES){
// De-highlight all other cells
[[NSNotificationCenter defaultCenter] postNotificationName:MyTableCellHighlightedNotification
object:self]
}
}
- (void)tableCellHighlighted:(NSNotification*) notification
{
// All cells receive this notification
if([notifcation object] != self){
// All cells except the notification sender de-highlight themselves
[self setHighlighted:NO];
}
}