0

ここで提示された方法を試してみましたが、selectedBackgroundView透明にできないことを除いてすべてが機能し、白のままです。私のカスタムUITableViewCellクラスには次のものがあります:

-(void)awakeFromNib {
    UIView *bkgView = [[UIView alloc]initWithFrame:self.frame];
    bkgView.alpha = 0.5;
    bkgView.backgroundColor = [UIColor clearColor];
    self.selectedBackgroundView = bkgView;
}

メソッドも呼び出し[self setNeedsDisplay];ましたsetSelected

私が望むのは、青色のハイライトを削除UITableViewCellSelectionStyleBlue UITableViewCellSelectionNone( setHighlight/Selected. 私はそこにとても近いです、それはただselectedBackgorundView白いままです!redColorまたはにblueColorすると赤や青に見えますが、 にすると白に見えclearColorます。透過PNG画像を使って背景を設定することも考えましcolorWithPatternImageたが、これは避けたいです。

これら 2 つのメソッド呼び出しに依存する方がはるかにクリーンであるため、これを試して理解することを好みます。また、選択すると白くなる開示インジケーターの使用を保持したいと考えていますUITableViewCellSelectionNone

4

3 に答える 3

1

tableView:willSelectRowAtIndexPath:を使用してnilを返すことをお勧めします。そうすれば、セルが選択されるときに通知を受け取ることができます。ただし、実際には選択されないため、コントロールのデフォルトのスタイルを処理しなくても、そこから自分で選択を管理できます。

于 2012-11-11T20:44:58.597 に答える
0

selectedBackgroundView を使用して青をオーバーライドします

viewForRow: メソッド内:

     UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
    v.backgroundColor = [UIColor clearColor];
    cell.selectedBackgroundView = v;
于 2012-11-11T20:15:08.353 に答える
0

背景ビューと selectedBackgroundView を設定します。

    UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
    view.backgroundColor = [UIColor whiteColor];
    self.backgroundView = view;

    view = [[UIView alloc] initWithFrame:CGRectZero];
    view.backgroundColor = [UIColor clearColor];
    self.selectedBackgroundView = view;

次にオーバーライド- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    [super setHighlighted:highlighted animated:animated];
    self.backgroundView.hidden = highlighted;
}
于 2012-11-11T23:06:06.780 に答える