Ich bin ein Neuling in der iOS-Entwicklung. Ich möchte meinem Häkchen ein Häkchen hinzufügen, UITableViewCell
wenn es ausgewählt ist. Das Häkchen sollte entfernt werden, wenn eine andere Zeile ausgewählt ist. Wie würde ich das machen?
ios
uitableview
Suchi
quelle
quelle
In Ihrer UITableViewDatasource-Methode:
Und lastIndexPath ist ein
property(strong) NSIndexPath* lastIndexPath;
quelle
Ich fand heraus, dass das erneute Laden der Daten die Abwahl-Animation auf hässliche Weise unterbricht.
Diese Swift-Implementierung fügt Häkchen sauber hinzu / entfernt sie und hebt die Auswahl der Zeile auf:
wo
lastSelection
wird deklariert alsvar lastSelection: NSIndexPath!
Keine zusätzliche Aktivität
cellForRowAtIndexPath
erforderlich. Sollte nicht schwer in Obj-C zu replizieren sein.quelle
So setzen Sie ein Häkchen:
So aktivieren / deaktivieren Sie eine Zelle:
Um die Auswahl der vorherigen Zelle aufzuheben, verwenden Sie einen ivIn von NSIndexPath * lastSelected, um die zuletzt ausgewählte Zelle zu verfolgen:
quelle
basierend auf der gebildeten dataArray-Tabellenansicht. In ähnlicher Weise habe ich ein leeres Array genommen, und jedes Mal, wenn der Benutzer auf eine Zelle tippt, basierend auf indexValue von dataArray, habe ich dieses Objekt in selectedDataArray gespeichert
Die Frage ist wie ... Eine Frage hat mehrere Optionen (Antworten), aber schließlich wird nur eine oder keine Antwort das Ergebnis sein
Ebenso sollte nur eine Zelle ein Häkchen aufweisen und die verbleibenden Zellen sollten nicht ausgewählt sein. In einigen Fällen können Sie Ihre Antwort abwählen. Ich hoffe, dies ist die beste Antwort auf diese Frage
quelle
Aktualisieren Sie Swift 4
quelle
Verwenden von Swift 4.2 und Swift 5 Arbeitscode des Häkchens nur für die ausgewählte Zeile in TableView
quelle
Angenommen, Sie gehören zu einer Klasse, von der erbt
UITableViewController
, führt dies den Trick in Swift 3 aus:quelle
kleiner Tippfehler
sollte lesen
und auch in der
Wo zuvor ausgewählt ist Ihr lokaler ivar usw. Auf diese Weise wird beim erneuten Laden mit einem ausgewählten Index auch die Auswahl aufgehoben, wenn Sie durch die möglichen Auswahlen blättern.
quelle
Die obigen Antworten funktionieren nicht, wenn Sie die Zelle für eine große Anzahl von Daten wiederverwendet haben. Auf dem Bildlauf sehen Sie wiederholte Häkchen. Um die folgenden Schritte zu vermeiden:
Deklarieren Sie für Variable: var indexNumber: NSInteger = -1
Fügen Sie den folgenden Code in cellforRowAtIndexPath hinzu:
Und in didselectAtIndexpath fügen Sie den folgenden Code hinzu:
überschreiben func tableView (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
quelle
Es ist besser, sich diesem Problem aus einer anderen Richtung zu stellen. Stellen Sie alle Arbeiten an internen UIKit-Mechanismen auf und verschieben Sie die Implementierung in UITableViewCell:
quelle
Ich denke, es ist sauberer, das Zubehör in Ihrer benutzerdefinierten UITableViewCell-Implementierung festzulegen. In Kürze habe ich verwendet:
quelle
Rufen Sie einfach die
didSelectRowAtIndexPath
Methode auf, wenn Sie eine Zeile zum Anzeigen von CheckMark auswählen und die Kontrollkästchenzeile zum Ausblenden von CheckMark auswählen.quelle
schnell 4 für den Fall, dass Sie brauchen.
quelle
Es gibt zwei Möglichkeiten, wie Sie dies tun können. Eine ist ohne Mehrfachauswahl und eine andere mit Mehrfachauswahl.
quelle
Der oben genannte Code funktioniert nur mit der einzelnen Auswahl. Dieser folgende Code funktioniert sicherlich für mehrere Auswahlen .
quelle
Wenn eine ausgewählte Zelle (mit dem Häkchen erneut ausgewählt) ist, entfernen Sie einfach die Auswahl.
Bonus:
Verwenden Sie diese
self.tableView.indexPathForSelectedRow
Option, um indexPath für die ausgewählte Zelle zu erkennenquelle