セルをタップすると、行が選択されて強調表示されます。次に、強調表示を無効にして選択を許可します。これを回避する方法はありますか。これに答える質問がありますが、選択と強調表示の両方が無効になります。
回答:
ストーリーボードからセルの選択スタイルを「なし」に設定するだけです。
またはコードから:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Swift 3の場合:
cell.selectionStyle = UITableViewCellSelectionStyle.none
Swift 4以降の場合:
cell.selectionStyle = .none
UITableViewCell
のselectedBackgroundView
色を透明に変更します。
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
または特定のセルに設定するには:
cell.backgroundView = clearView
cell.selectionStyle = UITableViewCellSelectionStyleNone
です。Appleのアニメーションロジックの奥深くで何かを壊してしまうことがあるからです。
UITableViewCell.appearance().selectionStyle = .None
awakeFromNib()
関数に
迅速な3で
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
カスタムカラーを追加するには、以下のコードを使用します。そしてそれを透明に使用するために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)
}
Objcの場合:
[セルsetSelectionStyle:UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
これをcellForRowAtIndexPath
メソッドに追加します