2015-05-14 3 views
47

Wenn Sie auf eine Zelle tippen wird die Zeile ausgewählt und hervorgehoben.Jetzt, was ich tun möchte, ist die Hervorhebung deaktivieren, aber die Auswahl zulassen.Ist es ein Weg um es.Es gibt ist eine Frage, die dies beantwortet, aber sowohl die Auswahl als auch die Hervorhebung deaktiviert.Deaktivieren Sie die Hervorhebung der uitableview, aber erlauben Sie die Auswahl einzelner Zellen

+4

'cell.selectionStyle = UITableViewCellSelectionStyleNone;' fügen Sie das in Ihrer 'cellForRowAtIndexPath' Methode hinzu – Shruti

Antwort

102

Sie können nur die Auswahl Stil der Zelle gesetzt lösen auf "None" aus Storyboard:

See here

Oder vom Code:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

für SWIFT 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none 

für SWIFT 4 & oben:

cell.selectionStyle = .none 
+0

Wenn ich auf" none "wähle, verliere ich die Fähigkeit, vom hervorgehobenen Zustand zu arbeiten. Kann ich den Hintergrund ohne Weiß machen, ohne diesen Zustand zu verlieren? – Sean

+1

Update: Tounaobuns Antwort funktionierte für mich! – Sean

8

Versuchen Zellenauswahl Stil Keine Einstellung -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Dies wird Ihr Problem

17

ändern UITableViewCell ‚s selectedBackgroundView Farbe transparent.

let clearView = UIView() 
    clearView.backgroundColor = UIColor.clearColor() // Whatever color you like 
    UITableViewCell.appearance().selectedBackgroundView = clearView 

oder für eine bestimmte Zelle festgelegt:

cell.backgroundView = clearView

+1

Dies ist die beste Option, da 'cell.selectionStyle = UITableViewCellSelectionStyleNone' manchmal etwas tief in der Animationslogik von Apple unterbricht. – orkenstein

+0

dann verwenden Sie stattdessen .. 'UITableViewCell.Appearance(). SelectionStyle = .None' – vaibhav

+0

Dies ist schön zu verwenden, wenn Sie auswählbare Dinge innerhalb der Zelle haben. –

6

für SWIFT:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

Oder wenn Sie eine Zelle in schnellen Unterklasse:

class CustomCell : UITableViewCell { 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
     selectionStyle = .None 
    } 

} 
-3

Der beste Weg ist:

cell.selectionMode = .none 
1

für die Suche nach einer programmatischen Art und Weise in Swift sucht 3

cell.selectionStyle = UITableViewCellSelectionStyle.none

0

Für ObjC:

[Zelle setSelectionStyle: UITableViewCellSelectionStyleNone];

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

Für Swift 3.0:

cell.selectionStyle = .none 
1

in schnellen 3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     tableView.deselectRow(at: indexPath, animated: true) 
} 
0

Hier ist die Lösung für eine schnelle 3 ist, 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 
}() 
0

Um eine benutzerdefinierte Farbe verwenden, um die unten hinzufügen Code. Und damit es transparent Verwendung 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 benutzerdefinierte Farbe verwenden möchten, um ihm Ecke Blick Verwendung gerundet:

cell.layer.cornerRadius = 8 

Verwenden Sie auch diese für eine bessere Animation und fühlen

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    tableView.deselectRow(at: indexPath, animated: true) 
} 
Verwandte Themen