Wie kann ich festlegen, dass die Zelleigenschaft von UITableView nicht auswählbar ist? Ich möchte dieses blaue Auswahlfeld nicht sehen, wenn der Benutzer auf die Zelle tippt.
iphone
cocoa-touch
Mugunth
quelle
quelle
tableView:shouldHighlightRowAtIndexPath:
wie von Ayush unten angegebenAntworten:
Setzen Sie die
selectionStyle
Eigenschaft der Tabellenzelle aufUITableViewCellSelectionStyleNone
. Das sollte verhindern, dass es hervorgehoben wird, und Sie können diese Eigenschaft auch in Ihrem überprüfentableView:didSelectRowAtIndexPath:
.quelle
So verhindern Sie die Zeilenauswahl
Um die Auswahl der vollständig zu verhindern
UITableViewCell
, haben Sie IhrUITableViewDelegate
GerättableView:willSelectRowAtIndexPath:
. Von dieser Methode können Sie zurückkehren,nil
wenn Sie nicht möchten, dass die Zeile ausgewählt wird.Dies verhindert, dass die Zeile ausgewählt und
tableView:didSelectRowAtIndexPath:
aufgerufen wird. Beachten Sie jedoch, dass dies nicht verhindert , dass die Zeile hervorgehoben wird.So verhindern Sie das Hervorheben von Zeilen
Wenn Sie verhindern möchten, dass die Zeile bei Berührung visuell hervorgehoben wird, können Sie sicherstellen, dass die Zelle auf eingestellt
selectionStyle
istUITableViewCellSelectionStyleNone
, oder Sie können IhrUITableViewDelegate
Gerät vorzugsweisetableView:shouldHighlightRowAtIndexPath:
wie folgt einrichten :quelle
didSelectRowAtIndexPath
dawillSelectRowAtIndexPath
es sowieso immer aufgerufen wird.benutze das:
quelle
didSelectRowAtIndexPath
wird immer noch aufgerufen.Nur für iOS 6+.
Sie können die Methode
tableView:shouldHighlightRowAtIndexPath:
in Ihrem Delegaten implementieren . Lesen Sie hier mehr: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.htmlquelle
Hatte auch dieses Problem alles schon Erwähnte ausprobiert. Der letzte Trick, der den "blauen Blitz" bei der Auswahl einer Tabellenzelle beseitigte, war das Hinzufügen dieser Zeile:
Ich bin mir nicht sicher, ob es diese eine Zeile oder alles zusammen war, aber als Gesamtergebnis bekomme ich keine blaue Auswahl oder sogar den blauen Blitz mehr. Glücklich!
quelle
einstellen
cell.userInteractionEnabled = NO;
quelle
Die Verwendung von IB ist auch eine elegante Methode:
quelle
Apple sagt, dass Sie in didSelectRowAtIndexPath als erstes die Auswahl der Zeile aufheben sollten
Anschließend können Sie den AccessoryType in ein Häkchen oder keines usw. ändern. Wenn Sie also didSelectRowAtIndexPath eingeben, können Sie die Auswahl der Zeile aufheben. Wenn diese nicht ausgewählt werden soll, aktivieren Sie diese Zeile einfach nicht.
Programmierhandbuch für die Tabellenansicht
quelle
Eine andere Möglichkeit besteht darin, ein paar Kategoriemethoden hinzuzufügen
UITableViewCell
. Ich mag diese Antwort besser als Sebastians (auch gute) Antwort, weil ich meinen Tisch so baue. Ich dachte, es könnte jemand anderem hilfreich sein.quelle
Swift 4:
Sie können die Auswahl und Hervorhebung mithilfe von UITableViewDelegate verhindern: shouldHighlightRowAt Bei
dieser Antwort wird davon ausgegangen,
dass Sie eine benutzerdefinierte Zelle mit dem Namen CustomTableViewCell erstellt haben und dass Sie in dieser benutzerdefinierten Zelle mit dem Namen isSelectable einen Booleschen Wert erstellt haben
Dies ist die Swift-Version von Sebastian Celis 'objc Antwort.
quelle
Wenn Sie Ihre Zelle in Interface Builder entworfen haben, können Sie dies tun, indem Sie das Kontrollkästchen unter " Benutzerinteraktion aktiviert " für das entfernen
tableViewCell
.quelle
Es gibt eine andere einfache Möglichkeit, um zu vermeiden, dass die Auswahl blau angezeigt wird.
Wählen Sie eine Zelle aus, die nicht blau angezeigt werden soll.
Wählen Sie dann den Attributinspektor aus (das Schildsymbol neben dem Linealsymbol in der Eigenschaftenansicht auf der Seite).
Ändern Sie dann das Feld "Auswahl" von "Blau" in "Keine".
Beachten Sie, dass dies vermutlich immer noch ausgewählt wird. Es wird nur nicht als ausgewählt angezeigt, wenn Sie nur den UI-Effekt vermeiden möchten.
quelle
Verwenden Sie tableView: willDisplayCell: forRowAtIndexPath: anstelle von tableView: didSelectRowAtIndexPath:, um den Blitz zu entfernen, der beim ersten Berühren der Zelle angezeigt wird.
quelle
Um bestimmte Zeilen nicht auszuwählen, müssen Sie einige Änderungen an zwei Methoden des UITableView-Delegaten vornehmen.
In der folgenden Methode
Schreiben Sie nach der Zuweisung der Zelle den folgenden Code
Der obige Code verhindert das Hervorheben der Zelle, wenn der Benutzer versucht, eine Auswahl zu treffen.
in dieser Delegate-Methode unten
Wenn Sie nicht schreiben, wird die
if(indexPath.row == someCellNumber) return;
Zeile weiterhin ausgewählt und es besteht die Möglichkeit eines App-Absturzesquelle
Swift 4:
In der Zellklasse:
quelle
Swift 5
quelle