uitableviewの強調表示を無効にしますが、個々のセルの選択は許可します


83

セルをタップすると、行が選択されて強調表示されます。次に、強調表示を無効にして選択を許可します。これを回避する方法はありますか。これに答える質問がありますが、選択と強調表示の両方が無効になります。


8
cell.selectionStyle = UITableViewCellSelectionStyleNone;これをcellForRowAtIndexPathメソッドに追加します
Shruti 2015年

回答:


180

ストーリーボードからセルの選択スタイルを「なし」に設定するだけです。

こちらをご覧ください

またはコードから:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Swift 3の場合:

cell.selectionStyle = UITableViewCellSelectionStyle.none

Swift 4以降の場合:

cell.selectionStyle = .none

「なし」を選択すると、強調表示された状態の作業ができなくなります。その状態を失うことなく、背景をなし/白にすることはできますか?
ショーン

これはどの機能になりますか?私は「cellForRowAt」を推測していますか?
ダニエルスプリンガー

テーブルビューではなくセルで行う必要があります
Salem Binmusaed 2018

26

UITableViewCellselectedBackgroundView色を透明に変更します。

    let clearView = UIView()
    clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
    UITableViewCell.appearance().selectedBackgroundView = clearView

または特定のセルに設定するには:

cell.backgroundView = clearView


1
これは最良のオプションcell.selectionStyle = UITableViewCellSelectionStyleNoneです。Appleのアニメーションロジックの奥深くで何かを壊してしまうことがあるからです。
orkenstein 2016年

その後、代わりに使用してください..UITableViewCell.appearance().selectionStyle = .None
vaibhav 2017年

これは、セル内に選択可能なものがある場合に使用すると便利です。
Matthew Korporaal 2017

優れたソリューション。このコードをセルのawakeFromNib()関数に
入れると、うまくいきます

このオプションを使用すると、テーブルビューのセル区切り線が表示されなくなります。
jonye ._。jin

8

セル選択スタイルを[なし]に設定してみてください-

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

これはあなたの問題を解決します



6

Swiftの場合:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

または、セルをswiftでサブクラス化する場合:

class CustomCell : UITableViewCell {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        selectionStyle = .None
    }

}


2

カスタムカラーを追加するには、以下のコードを使用します。そしてそれを透明に使用するためにalpha: 0.0

cell.selectedBackgroundView = UIView(frame: CGRect.zero)
cell.selectedBackgroundView?.backgroundColor = UIColor(red:0.27, green:0.71, blue:0.73, alpha:1.0)

カスタムカラーを使用していて、角を丸くしたい場合は、次を使用します。

cell.layer.cornerRadius = 8

また、これを使用してアニメーションと感触を改善します

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)
}

1

Swift3でプログラム的な方法を探している人のために

cell.selectionStyle = UITableViewCellSelectionStyle.none


1

ストーリーボードでセル自体の選択プロパティを設定できます ここに画像の説明を入力してください


0

Objcの場合:

[セルsetSelectionStyle:UITableViewCellSelectionStyleNone];

- (void)viewDidLoad {
  [super viewDidLoad];
  _tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    .. .. .. .. 
   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
   . . . . .. 
}


-1

これがswift3のソリューションで、編集モードでも機能します

cell.selectionStyle = .gray
cell.selectedBackgroundView = {

    let colorView = UIView()
    colorView.backgroundColor = UIColor.black.withAlphaComponent(0.0)
    //change the alpha value or color to match with you UI/UX

    return colorView
}()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.