2011-11-11 2 views
1

私は自分のアプリケーションにTableViewを持っており、セパレータの高さと色を変更する必要がありました。それをここでブラウズすると、私は解決策を見つけ出すのに役立ちました。 だから私は基本的に自分のセル内のUIViewを追加し、「偽」のセパレータとしてこれを使用しています:UITableViewCellとRowで選択された色のセパレータとしてのUIView

UIView *colorSeparator = [[UIView alloc] initWithFrame:CGRectMake(0, 53, cell.frame.size.width, 4)]; 
    colorSeparator.backgroundColor = [UIColor yellowColor]; 
    [cell.contentView addSubview:colorSeparator]; 
    [colorSeparator release]; 

しかし、今私は、行をタップした時に、選択色が私の偽のセパレータに適用されることに気づきました。誰もそれを避ける方法を知っていますか?あなたの時間のアドバイスでThx:

答えて

2

setSelected:animated:とUITableViewCellのsetHighlighted:animated:の方法でセパレータの色を復元することができます。

// just edited your function, it was missing a square bracket 
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { 
    UIColor *c = [[colorSeparator.backgroundColor retain] autorelease]; 
    [super setHighlighted:highlighted animated:animated]; 
    colorSeparator.backgroundColor = c; 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    UIColor *c = [[colorSeparator.backgroundColor retain] autorelease]; 
    [super setSelected:selected animated:animated]; 
    colorSeparator.backgroundColor = c; 
} 
+0

Thxたくさん!つまり、私はUITableViewCellを継承し、この2つのメソッドをオーバーライドする必要がありますか? –

+0

はい、UITableViewCellをサブクラス化し、このメソッドをオーバーライドして、新しいクラスのオブジェクトをUITableViewデリゲートメソッドから返す必要があります。 –

+0

thx、それは動作します!あなたのために投票してください! –

関連する問題