ios - source - uitableviewcell swift 3
deshabilite el resaltado de uitableview pero permita la selección de celdas individuales (12)
cuando tocas una celda, la fila se selecciona y resalta. Ahora lo que quiero hacer es deshabilitar el resaltado pero permitir la selección. Hay una forma de evitarlo. Hay una pregunta que responde a esto, pero deshabilita tanto la selección como el resaltado.
Aquí está la solución para Swift 3, funciona incluso en modo edición
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
}()
Cambie el color
selectedBackgroundView
UITableViewCell
a transparente.
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
o para establecer una celda específica:
cell.backgroundView = clearView
Intente establecer el estilo de selección de celda en Ninguno -
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Esto resolverá tu problema
Para Swift 3.0 :
cell.selectionStyle = .none
Para Swift 5, la mejor manera es:
cell.selectionStyle = .none
Para agregar un color personalizado, use el siguiente código.
Y para hacerlo transparente, use
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)
Si usa un color personalizado y desea darle un aspecto de esquina redondeada, use:
cell.layer.cornerRadius = 8
Además, use esto para una mejor animación y sensación
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
Puede configurar el estilo de selección de la celda en "Ninguno" desde Storyboard:
O del código:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Para Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
Para Swift 4 y superior:
cell.selectionStyle = .none
Para Objc:
[cell setSelectionStyle: UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}
Para Swift:
UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;
O cuando subclases una celda en Swift:
class CustomCell : UITableViewCell {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
selectionStyle = .None
}
}
Para aquellos que buscan una forma programática en Swift 3
cell.selectionStyle = UITableViewCellSelectionStyle.none
en Swift 3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}