Wenn Sie auf eine Zelle tippen, wird die Zeile ausgewählt und hervorgehoben. Jetzt möchte ich die Hervorhebung deaktivieren, aber die Auswahl zulassen. Gibt es einen Weg, dies zu umgehen. Es gibt eine Frage, die dies beantwortet, aber sowohl die Auswahl als auch die Hervorhebung deaktiviert.
ios
objective-c
uitableview
Soldatshin
quelle
quelle
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Fügen Sie dies in IhrecellForRowAtIndexPath
Methode einAntworten:
Sie können den Auswahlstil der Zelle im Storyboard einfach auf "Keine" setzen:
Oder aus dem Code:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Für Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
Für Swift 4 und höher:
quelle
Ändern Sie
UITableViewCell
dieselectedBackgroundView
Farbe in transparent.let clearView = UIView() clearView.backgroundColor = UIColor.clearColor() // Whatever color you like UITableViewCell.appearance().selectedBackgroundView = clearView
oder für eine bestimmte Zelle festlegen:
cell.backgroundView = clearView
quelle
cell.selectionStyle = UITableViewCellSelectionStyleNone
manchmal etwas tief in Apples Animationslogik bricht.UITableViewCell.appearance().selectionStyle = .None
awakeFromNib()
Funktion der Zelle ist ein VergnügenVersuchen Sie, den Zellenauswahlstil auf Keine zu setzen.
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Dies wird Ihr Problem lösen
quelle
Für Swift 3.0 :
quelle
Für Swift:
UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;
Oder wenn Sie eine Zelle schnell unterordnen:
class CustomCell : UITableViewCell { required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! selectionStyle = .None } }
quelle
in schnell 3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) }
quelle
Verwenden Sie den folgenden Code, um eine benutzerdefinierte Farbe hinzuzufügen. Und um es transparent zu machen
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)
Wenn Sie eine benutzerdefinierte Farbe verwenden und diese mit abgerundeten Ecken versehen möchten, verwenden Sie:
cell.layer.cornerRadius = 8
Verwenden Sie dies auch für eine bessere Animation und ein besseres Gefühl
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) }
quelle
Für diejenigen, die einen programmatischen Weg in Swift 3 suchen
cell.selectionStyle = UITableViewCellSelectionStyle.none
quelle
Sie können die Auswahleigenschaft der Zelle selbst im Storyboard festlegen
quelle
Für Objc:
- (void)viewDidLoad { [super viewDidLoad]; _tableView.allowsSelection = YES; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { .. .. .. .. [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; . . . . .. }
quelle
Für Swift 5 ist der beste Weg:
quelle
Hier ist die Lösung für Swift 3, funktioniert auch im Bearbeitungsmodus
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 }()
quelle