2015-10-09 18 views
5

Wenn ich auf die Zellen meiner Tabellenansicht klicke, verdunkeln sie sich zu einer grauen Farbe und werden erst wieder weiß, wenn ich auf eine andere Zelle klicke. Gibt es eine Art Boolean, den ich einstellen muss, um das nicht zu tun?Warum werden meine UITableViewCells grau, wenn ich auf sie klicke?

Hier ist ein Screenshot zu erklären, mein Problem:

enter image description here

Links zu anderen Websites wären hilfreich, wenn es eine ausführlichere Beschreibung bedeuten würde. (Es sei denn, es ist ein super einfach zu beheben, dann der richtige Code oder Schritte zu nehmen wäre einfacher, als ein Link.)

+0

Also, wenn Sie auf einer Zelle drücken Sie einfach das Häkchen wollen und nicht die graue Auswahl? –

Antwort

15

Dies ist das Standardverhalten von UITableView.

Sie müssen deselectRowAtIndexPath innerhalb von didSelectRowAtIndexPath innerhalb Ihrer UITableViewController-Klasse aufrufen.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
} 

Weitere Informationen finden Sie in der iOS-Dokumentation.

UITableView
UITableViewDelegate

+0

Entschuldigung für die späte Antwort. Das hat genau das gemacht, was ich wollte. Danke, Qasim! –

+0

Vielen Dank. Meine Zeit gerettet. –

+0

Betrachte @ Anthony Ditos Antwort. Dadurch wird vermieden, dass eine Reihe grau blinkt, wenn sie angetippt wird. – Carl

6

Sie dies ein paar Möglichkeiten tun ...

  1. tableView.allowsSelection = false

  2. Sie können die TableView im xCode Storyboard so einstellen, dass auf der vierten Registerkarte keine Auswahl möglich ist.

  3. Oder Sie können dies tun, auf der Zell cell.selectionStyle = UITableViewCellSelectionStyle.None

Was Sie wollen, geht letztlich um zu sein, was Verhalten, das Sie nach gehen. Mach einfach ein wenig experimentieren.

1

Sie können Stil ändern, indem Sie:

[cell setSelectionStyle:UITableViewCellSelectionStyleGray]; 
3

Swift 3

1 Option: (Was ich immer)

zu geben, es fade out Animation nach mit grauen ausgewählt, dies zu tun:

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

Option 2:

die Highlight-Effekt vollständig entfernen Sie diese Zeile zu Ihrem cellForRowAt hinzufügen:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = ..... 
    cell.selectionStyle = .none 
    return cell 
} 
+1

Ihre Option 2 half mir, mein Problem mit dem blinkenden grauen Hintergrundeffekt vor der von mir eingestellten Farbe zu lösen. Danke vielmals! – user30646

+0

@ user30646 Glücklich, dass es dir geholfen hat :) – MBH

1

Swift 3

In einer benutzerdefinierten Zelle fügen Sie Folgendes hinzu:

override func awakeFromNib() { 
    super.awakeFromNib() 
    selectionStyle = .none 
} 

Dies stellt sicher, dass Sie nicht einmal das Grau sehen, wenn die Zelle angezapft wird. Dieser Code im UITableViewDelegate wird nur abgewählt, wenn er angetippt wird.

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