web-dev-qa-db-fra.com

désactiver la mise en évidence uitableview mais autoriser la sélection de cellules individuelles

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?.

76
soldiershin

Vous pouvez simplement définir le style de sélection de la cellule sur "Aucun" dans Storyboard:

See here

Ou du code:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Pour Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

Pour Swift 4 & plus:

cell.selectionStyle = .none
160
József Vesza

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

24
tounaobun

Pour Swift 3.:

cell.selectionStyle = .none
8
Eliko

Essayez de définir le style de sélection de cellule sur Aucun -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Cela résoudra votre problème

8
Viper

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
    }

}
6
Melvin

in Swift

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
}
4
Sai kumar Reddy

Pour ceux qui recherchent une méthode de programmation dans Swift

cell.selectionStyle = UITableViewCellSelectionStyle.none

1
Danoram

Vous pouvez définir la propriété de sélection de la cellule elle-même dans le storyboard enter image description here

1
M.E

Pour Swift 5, le meilleur moyen est:

cell.selectionStyle = .none
0
ramzesenok

Pour Objc:

[cell setSelectionStyle: UITableViewCellSelectionStyleNone];

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

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)
}
0
Prateekro