web-dev-qa-db-ja.com

テーブルビューの選択の色を変更する必要があります

テーブルビューのデフォルトの青色の選択をカスタムカラーに変更する必要があります。それを行う方法はありますか?助けて

24
smakstr

これを行うための最良の方法は次のとおりです。

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"myCellId";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        UIView *v = [[[UIView alloc] init] autorelease];
        v.backgroundColor = [UIColor redColor];
        cell.selectedBackgroundView = v;
    }
    // Set up the cell...
    cell.textLabel.text = @"foo";
    return cell;
}

あなたに関連する部分はcell.selectedBackgroundView = v;命令。ここでは、非常に基本的なビュー「v」を任意のビューに置き換えることができます。

62
Zoran Simic

また、グループ化されたセルに対してカスタムで選択されたセルビューを作成しようとすると、この問題に遭遇しました。中央のセルがあると仮定して、セルの上部、中央、下部の3種類の画像を作成することでこの問題を解決しました。

NSString *imageFile;

if (row == 0) {
 imageFile = @"highlighted_cell_top.png";
} else if (row == ([registeredDetailsKeys count] - 1)) {
 imageFile = @"highlighted_cell_bottom.png";
} else {
 imageFile = @"highlighted_cell_middle.png";
}

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageFile]];

cell.selectedBackgroundView = imageView;

もっと簡単な方法があるかもしれませんが、私は結果に満足しています。

6
Ufb007

カスタムカラーは使えないと思います。ただし、UITableViewCellの次のプロパティを使用できます

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

選択スタイルは、セルが選択されたときのセルの色を決定するbackgroundView定数です。デフォルト値はUITableViewCellSelectionStyleBlueです。以来

typedef enum {
   UITableViewCellSelectionStyleNone,
   UITableViewCellSelectionStyleBlue,
   UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

デフォルトの青から灰色に切り替えるか、色付きの選択をまったく行わないようにすることができます。

3
Massimo Cafaro

ヘッダーで宣言した後、

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

実装する

cell.selectionStyle = UITableViewCellSelectionStyleGray

ここで、UITableViewCellSelectionStyleGrayUITableViewCellSelectionStyleNoneUITableViewCellSelectionStyleBlueUITableViewCellSelectionStyleGrayになります。

3
dimmalo

これを行う別の方法は、セル上で新しいビューに移動し、任意の色と50%程度の不透明度を使用することです。 -setSelected:animated:呼び出しを取得したら、このビューをセルに移動します。私が移動と言うとき、実際には常にセルの上にビューを表示できますが、必要に応じて非表示のビットをオフにしてからオンにするだけです。

0
mahboudz