UITableView Tippen Sie auf, um die Auswahl aufzuheben Zelle
Ich habe eine UITableViewCell
ist, die ausgewählt ist, wenn angezapft. Während dieser ausgewählten Zustand, wenn der Benutzer tippt die Zelle wieder, ich will, dass die Zelle zu deaktivieren.
Kann ich nicht finden ruft der Delegat getroffen. Irgendwelche Ideen, wie diese umzusetzen ist? Ist es wirklich eine gestik-Erkennung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tatsächlich tun dies mit Hilfe der delegate-Methode
willSelectRowAtIndexPath:
Beachten Sie, dass
deselectRowAtIndexPath:
nicht Aufruf der delegate-Methoden automatisch aus, so müssen Sie diese Aufrufe manuell.Swift 4:
Bei der Verwendung von "Mehrfach-Auswahl" - Modus, "didSelectRowAtIndexPath" wird nicht aufgerufen, wenn Sie auf eine Zeile klicken, der bereits ausgewählt ist. Mehr als eine Zeile ausgewählt werden können programmgesteuert in "Single Selection" - Modus und die Zeilen-trigger-didSelectRowAtIndexPath auf alle Klicks.
Nur ein heads-up, wer hatte die gleichen Probleme.
Hier ist eine noch sauberere Lösung:
Ich denke, dass mit den blauen Auswahl-Färbung zur Umschaltung kann einen merkwürdigen Eindruck. Warum nicht verwenden ein Zubehör, wie ein Häkchen? Dies ist eine der viel mehr bekannte Technik für die Auswahl Umschalten der (multi-cell oder einzelne Zelle).
Finden Sie diese Antwort zur info:
UITableView Mehrfachauswahl
Wenn Sie wählen Sie eine Zelle, die dieser Delegat-Methode ausgelöst.
Es ist pseudo-code.
Können Sie versuchen, diese ein, es ist funktioniert für mich (für eine einzelne Auswahl oder Mehrfachauswahl):
A. weisen Sie eine private NSMutableArray in viewDidLoad wie:
B. in UITableViewDelegate didSelectRow fügen Sie folgende Zeilen
Swift version von prisonerjohn Antwort :
Vom @prisonerjohn, im Fall jemand fragt sich, wie um zu prüfen, ob der Delegierte reagiert auf den Selektor wie @Patrick schon sagte, in Swift 3:
Use of unresolved identifier 'tableView(_:willDeselectRowAt:)'
. Mit XCode9.1 und Swift3Lassen Sie die einzelnen Auswahl-Modus auf, aber überschreiben Sie die folgenden funcs wie diese:
War ich nach der gleichen Sache, aber @occulus' Antwort mir der Hinweis fehlte mir.
Es ließ mich erkennen, dass der Weg, um dies getan ist, um zu ermöglichen, dass mehrere Auswahl in der Tabelle anzeigen und manuell deaktivieren Sie die zuvor ausgewählten Zeilen wenn eine neue Zeile wählen Sie mit einer der delegate-Methoden.
Scheint es ganz natürlich, dass im single-Modus Auswahl, die Tabelle wird versucht, lassen Sie eine Zeile ausgewählt, so viel wie möglich, damit Sie nicht deaktivieren Sie auf Tippen Sie auf die ausgewählte Zeile.
Vielleicht meine Frage war nicht spezifisch genug, aber die beiden Antworten sind ein bisschen weit, was ich nach war.
Scheint es, ist dies nicht möglich, und ich ging mit gestik-Erkennung der Zelle manuell ausgewählte /nicht ausgewählte Zustand.