Wenn ich auf meine klicke UITableViewCell
, wird der Hintergrundteil (die Bereiche, die mein Hintergrundbild nicht abdeckt) blau, wenn ich auf die Zelle klicke. Außerdem werden alle UILabel
s in der Zelle weiß, wenn darauf geklickt wird, was ich möchte.
Was ich jedoch nicht möchte, ist der blaue Hintergrund, wenn ich darauf klicke. Wenn ich dies jedoch tue selectionstylenone
, verliere ich die hervorgehobenen Farben für das UILabel
s in der Zelle.
Gibt es also eine Möglichkeit, den blauen Hintergrund beim Klicken auf die Zelle einfach zu entfernen, aber die hervorgehobenen Farben des UILabel
s beizubehalten?
ios
objective-c
uitableview
click
selection
SimplyKiwi
quelle
quelle
Antworten:
Sie können dies wie folgt tun. Stellen Sie den Auswahlstil Ihrer Tabellenzelle auf ein
UITableViewCellSelectionStyleNone
. Dadurch wird die blaue Hintergrundhervorhebung entfernt. Damit die Hervorhebung der Textbeschriftung wie gewünscht funktioniert, erstellen Sie anstelle der Standardklasse UITableViewCell eine Unterklasse vonUITableViewCell
und überschreiben Sie die StandardimplementierungsetHighlighted:animated
mit Ihrer eigenen Implementierung, die die Beschriftungsfarben je nach hervorgehobenem Status auf die gewünschten Werte festlegt .quelle
setHighlighted:animated:
, was denanimated
Parameter übernimmt . Das Überschreiben der Ein-Parameter-setHighlighted:
Methode funktioniert nicht.[super setHighlighted:highlighted animated:animated];
?setHighlighted
und überschreibensetSelected
. Zuerst wählen Sie eine Zelle aus, ok, die Textfarbe ändert sich in Weiß, dann scrollen Sie diese Zelle aus Ihrem visuellen Bildschirmteil heraus und scrollen dann zurück, siehe, die Textfarbe wird schwarzWenn Sie vor iOS7 arbeiten, sollten Sie Ihren Zellenauswahlstil nicht festlegen
Sonst lass es vorbei
UITableViewCellSelectionStyleDefault
Dann:
Dieser Code funktioniert ordnungsgemäß
quelle
Sie können die folgenden Delegierungsmethoden verwenden, nachdem Sie den Auswahlstil auf none festgelegt haben:
Implementieren Sie Ihren Code hier wie folgt
quelle
Verwenden Sie in cellForRowAtIndexPath diesen Code:
Hoffe das wird für dich funktionieren.
Viel Spaß beim Codieren :)
quelle
Um diese Arbeit zu erhalten, müssen Sie den Auswahlstil auf einstellen
UITableViewCellSelectionStyleNone
und dann die Methode überschreibensetSelected:animated:
, um das gewünschte Ergebnis zu erhalten. Es macht dasselbe wie der automatische Auswahlmechanismus von iOS, wenn Sie die blaue (oder graue) Auswahl sehen.Sie können dies auch auf andere Weise anpassen, z. B. indem Sie den UITableViewCell-Hintergrund usw. ändern.
quelle
Überschreiben der folgenden Funktionen in Ihrer Unterklasse von
UITableViewCell
.quelle
Um dem Standardverhalten des Auswahlstils zu entsprechen, sollten Sie sowohl
setHighlighted:animated:
als als auch überschreibensetSelected:animated:
. Möglicherweise möchten Sie diesen Code in eine gemeinsam genutzte Methode verschieben, um doppelten Code zu vermeiden.quelle
Überschreiben Sie in Ihrer benutzerdefinierten Zelle die Standardimplementierung von awakeFromNib & setSelected:
Achten Sie außerdem darauf , dass die Auswahl Stil ist nicht gesetzt None .
quelle
Der einzige Weg, wie ich es zum Laufen bringen konnte, war:
quelle
Sie können auch contentView.alpha verwenden. Hier ist das Beispiel.
Legen Sie zunächst den Auswahlstil für Ihre Zelle fest:
Als nächstes überschreiben Sie in einer benutzerdefinierten Zellenklasse diese Methode mit einem Animationsbeispiel:
quelle