Ich habe einen Brauch erstellt UITableViewCell
. Die Tabellenansicht zeigt Daten gut. Wenn der Benutzer die Zelle der Tabellenansicht berührt, möchte ich die Hintergrundfarbe der Zelle außer den Standardwerten [blaue Farbe] zum Hervorheben der Zellenauswahl anzeigen. Ich benutze diesen Code, aber nichts passiert:
cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];
Keine Notwendigkeit für benutzerdefinierte Zellen. Wenn Sie nur die ausgewählte Farbe der Zelle ändern möchten, können Sie dies tun:
Ziel c:
Schnell:
quelle
Tabellenansicht Die Hintergrundfarbe für die Zellenauswahl kann über das Storyboard im Interface Builder festgelegt werden:
quelle
Wenn Sie eine gruppierte Tabelle mit nur einer Zelle pro Abschnitt haben, fügen Sie einfach diese zusätzliche Zeile zum Code hinzu:
bgColorView.layer.cornerRadius = 10;
Vergessen Sie nicht, QuartzCore zu importieren.
quelle
Swift 3: Für mich hat es funktioniert, als Sie es in die
cellForRowAtIndexPath:
Methode eingefügt habenquelle
awakeFromNib()
Methode (im Fall einer benutzerdefinierten Zelle).Das Folgende funktioniert für mich in iOS 8.
Ich muss den Auswahlstil auf einstellen, damit die
UITableViewCellSelectionStyleDefault
benutzerdefinierte Hintergrundfarbe funktioniert. Bei anderen Stilen wird die benutzerdefinierte Hintergrundfarbe ignoriert. Es scheint eine Änderung des Verhaltens zu geben, da frühere Antworten stattdessen den Stil auf "Keine" setzen müssen.Der vollständige Code für die Zelle lautet wie folgt:
quelle
Erstellen Sie eine benutzerdefinierte Zelle für Ihre Tabellenzelle und geben Sie in der benutzerdefinierten Zellenklasse.m den folgenden Code ein. Dies funktioniert einwandfrei. Sie müssen das gewünschte Farbbild in
selectionBackground
UIImage platzieren.quelle
Swift 3.0 Erweiterung
cell.selectionColor = UIColor.FormaCar.blue
quelle
@IBInspectable
die Var hinzu, wenn du willst.@IBDesignable
ist dafür nicht nützlich.Wir müssen die ausgewählte Hintergrundansicht in dieser Methode einstellen.
quelle
Wenn Sie Ihrer Zelle eine benutzerdefinierte hervorgehobene Farbe hinzufügen möchten (und Ihre Zelle Schaltflächen, Beschriftungen, Bilder usw. enthält), habe ich die folgenden Schritte ausgeführt:
Zum Beispiel, wenn Sie eine ausgewählte gelbe Farbe wünschen:
1) Erstellen Sie eine Ansicht, die für alle Zellen mit einer Deckkraft von 20% (mit gelber Farbe) geeignet ist, z. B. backgroundselectedView
2) Schreiben Sie in den Zellencontroller Folgendes:
quelle
In Swift 4 können Sie die Hintergrundfarbe Ihrer Tabellenzelle auch global festlegen (von hier aus ):
quelle
Wenn Sie eine benutzerdefinierte TableViewCell verwenden, können Sie auch Folgendes überschreiben
awakeFromNib
:quelle
Ein weiterer Tipp zu Christians Art, den Hintergrund einer abgerundeten Ecke für eine gruppierte Tabelle anzuzeigen.
Wenn ich
cornerRadius = 10
für Zelle verwende, wird der abgerundete Auswahlhintergrund von vier Ecken angezeigt. Dies ist nicht dasselbe mit der Standardbenutzeroberfläche der Tabellenansicht.Also denke ich über einen einfachen Weg nach, um es mit CornerRadius zu lösen . Wie Sie den folgenden Codes entnehmen können, überprüfen Sie die Position der Zelle (oben, unten, in der Mitte oder oben) und fügen Sie eine weitere Unterebene hinzu, um die obere oder untere Ecke auszublenden. Dies zeigt genau das gleiche Aussehen mit dem Auswahlhintergrund der Standardtabellenansicht.
Ich habe diesen Code mit dem iPad getestet
splitterview
. Sie können die Frame-Position von patchLayer nach Bedarf ändern.Bitte lassen Sie mich wissen, ob es einfacher ist, dasselbe Ergebnis zu erzielen.
quelle
Ich möchte darauf hinweisen, dass der XIB-Editor Ihnen die folgenden Standardoptionen bietet:
Abschnitt: blau / grau / keine
(Die rechte Spalte mit Optionen, 4. Registerkarte, erste Gruppe "Tabellenansichtszelle", 4. Untergruppe, 1. von 3 Elementen lautet "Auswahl")
Wahrscheinlich können Sie das erreichen, was Sie tun möchten, indem Sie die richtige Standardoption auswählen.
quelle
UITableView
Gemäß der benutzerdefinierten Farbe für eine ausgewählte Zelle in , eine großartige Lösung gemäß der Antwort von Maciej SwicUm das noch zu ergänzen, deklarieren Sie Swics Antwort in der Zellenkonfiguration normalerweise unter:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Für einen zusätzlichen Effekt können Sie anstelle der Systemfarben RGB-Werte für einen benutzerdefinierten Farblook verwenden. In meinem Code habe ich Folgendes erreicht:
Lassen Sie mich wissen, ob das auch bei Ihnen funktioniert. Sie können mit der
cornerRadius
Nummer für die Effekte an den Ecken der ausgewählten Zelle herumspielen.quelle
Ich habe einen etwas anderen Ansatz als alle anderen, der die Auswahl bei Berührung und nicht nach der Auswahl widerspiegelt. Ich habe eine untergeordnete UITableViewCell. Sie müssen lediglich die Hintergrundfarbe in den Berührungsereignissen festlegen, wodurch die Auswahl bei Berührung simuliert wird, und anschließend die Hintergrundfarbe in der Funktion setSelected festlegen. Durch Festlegen der Hintergrundfarbe in der Funktion selSelected können Sie die Auswahl der Zelle aufheben. Stellen Sie sicher, dass das Berührungsereignis an den Super übergeben wird, da sich die Zelle sonst nicht so verhält, als wäre sie ausgewählt.
quelle
So fügen Sie den Hintergrund für alle Zellen hinzu (unter Verwendung der Antwort von Maciej):
quelle
Außer Kraft setzen
UITableViewCell
‚ssetSelected
auch funktioniert.quelle
Für diejenigen, die nur den standardmäßig ausgewählten grauen Hintergrund entfernen möchten, fügen Sie diese Codezeile in Ihre cellForRowAtIndexPath-Funktion ein:
quelle
für Swift 3.0:
quelle
Ich benutze unten Ansatz und funktioniert gut für mich,
quelle
Swift 4+:
Fügen Sie Ihrer Tabellenzelle die folgenden Zeilen hinzu
Schließlich sollte es wie folgt sein
quelle
Hier sind die wichtigen Teile des Codes, die für eine gruppierte Tabelle benötigt werden. Wenn eine der Zellen in einem Abschnitt ausgewählt ist, ändert die erste Zeile die Farbe. Ohne den Zellenauswahlstil zunächst auf "Keine" zu setzen, erfolgt ein annonierendes doppeltes Neuladen, wenn der Benutzer auf Zeile 0 klickt, wobei die Zelle in "bgColorView" wechselt und dann bgColorView wieder ausblendet und neu lädt. Viel Glück und lassen Sie mich wissen, ob es einen einfacheren Weg gibt, dies zu tun.
quelle
Im Fall einer benutzerdefinierten Zellenklasse. Einfach überschreiben:
quelle
Es ist einfach, wenn der Stil der Tabellenansicht einfach ist, aber im Gruppenstil ist es ein kleines Problem. Ich löse es durch:
bemerkte die kGroupTableViewCellWidth, ich definiere es als 300, es ist die Breite der Gruppentabellenansicht Zellenbreite im iPhone
quelle
Stellen Sie sicher, dass Sie die obige Zeile verwendet haben, um den Auswahleffekt zu verwenden
quelle
quelle
Ich verwende iOS 9.3 und das Einstellen der Farbe über das Storyboard oder die Einstellung
cell.selectionStyle
hat bei mir nicht funktioniert, aber der folgende Code hat funktioniert:Ich habe diese Lösung hier gefunden .
quelle
Versuchen Sie folgenden Code.
// Schnelle Version:
quelle
Swift 4.x.
Verwenden Sie die Swift- Erweiterung, um die Auswahlhintergrundfarbe in eine beliebige Farbe zu ändern
Erstellen Sie die UITableView Cell-Erweiterung wie folgt
Rufen Sie dann removeCellSelectionColour () mit der Zelleninstanz auf.
quelle