lorsque vous appuyez sur une cellule, la ligne est sélectionnée et mise en surbrillance.Maintenant, ce que je veux faire est de désactiver la mise en surbrillance, mais d'autoriser la sélection. Y a-t-il un moyen de la contourner?.
Vous pouvez simplement définir le style de sélection de la cellule sur "Aucun" dans Storyboard:
Ou du code:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Pour Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
Pour Swift 4 & plus:
cell.selectionStyle = .none
Changez la couleur de UITableViewCell
de selectedBackgroundView
en transparente.
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
ou pour définir une cellule spécifique:
cell.backgroundView = clearView
Pour Swift 3.:
cell.selectionStyle = .none
Essayez de définir le style de sélection de cellule sur Aucun -
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Cela résoudra votre problème
Pour Swift:
UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;
Ou lorsque vous sous-classez une cellule dans Swift:
class CustomCell : UITableViewCell {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
selectionStyle = .None
}
}
in Swift
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
Pour ceux qui recherchent une méthode de programmation dans Swift
cell.selectionStyle = UITableViewCellSelectionStyle.none
Pour Swift 5, le meilleur moyen est:
cell.selectionStyle = .none
Pour Objc:
[cell setSelectionStyle: UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}
Pour ajouter une couleur personnalisée, utilisez le code ci-dessous. Et pour le rendre transparent, utilisez 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 vous utilisez une couleur personnalisée et souhaitez lui donner un aspect arrondi, utilisez:
cell.layer.cornerRadius = 8
En outre, utilisez-le pour une meilleure animation et ressentez
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}