UITableViewCell wird nicht abgewählt, wenn Sie schnell zurückwischen
Habe ich nun aktualisiert, drei meiner apps auf iOS 7, aber in alle drei, obwohl Sie sich nicht mitteilen-code, ich habe das problem, wenn der Benutzer Eingaben zu gehen zurück in den Navigations-controller (anstatt Tippen Sie auf die zurück-Taste) schnell, die Zelle bleibt in den ausgewählten Zustand.
Für die drei apps, die man verwendet benutzerdefinierte Zellen programmgesteuert erstellt, ein anderer verwendet benutzerdefinierte erstellten Zellen in einem storyboard und der Dritte nutzt Standard-Zellen in einer sehr grundlegenden Unterklasse von UITableView, auch in einem storyboard. In allen drei Fällen, die Zellen nicht abwählen von selbst. Wenn der Benutzer Eingaben langsam, oder hat Sie die zurück-Taste, die Sie deaktivieren als normal.
Dies ist nur passiert in meinem iOS-7-apps, die Apple eigenen apps und third-party-apps aktualisiert und für iOS 7 alle benehmen sich normal (wenn auch mit leichten unterschieden, wie schnell sich die Zellen wird deaktiviert).
Es muss etwas sein, was ich falsch mache, aber ich bin mir nicht sicher, was?
InformationsquelleAutor der Frage Robert | 2013-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich beschäftige mich mit dem gleichen problem jetzt. Die UICatalog-Beispiel von Apple scheint sich zu bringen, die schmutzige Lösung.
Es wirklich macht mich nicht glücklich. Wie bereits erwähnt, bevor es verwendet
[self.tableView deselectRowAtIndexPath:tableSelection animated:NO];
deaktivieren Sie die aktuell ausgewählte Zeile.Ich noch erwähnen, der Beispielcode kann nicht sein
iOS 7iOS 8iOS 9iOS-10-readyEtwas, was wirklich verwirrt mich ist die UITableViewController-Klasse Referenz:
Dies ist genau das Verhalten, das ich erwarten... aber es scheint nicht zu funktionieren. Weder für Sie noch für mich. Wir haben wirklich die "schmutzige" Lösung, und tun es auf unsere eigene.
InformationsquelleAutor der Antwort Fabio Poloni
Dies funktioniert für mich am besten:
Ich selbst habe ein viel besseres deaktivieren Sie verblassen, während ich streichen langsam zurück.
InformationsquelleAutor der Antwort emreberge
FABIOS Antwort funktioniert gut, aber doesn ' T geben den richtigen look, wenn der Benutzer Eingaben nur ein bisschen und dann Ihre Meinung ändern. Um diesem Fall Recht müssen Sie zum speichern der ausgewählten index-Pfad und zurückgesetzt, wenn nötig.
Wenn Sie mit einem UITableViewController, stellen Sie sicher, deaktivieren Sie die built-in-clearing:
und fügen Sie die Eigenschaft für savedSelectedIndexPath:
Wenn Sie brauchen, um dies in ein paar verschiedene Klassen kann es sinnvoll sein, teilen Sie es heraus in einem Helfer, z.B. wie in diesem gist: https://gist.github.com/rhult/46ee6c4e8a862a8e66d4
InformationsquelleAutor der Antwort Rhult
Diese Lösung animiert die Zeile Abwahl zusammen mit der transition Koordinator (user-driven VC entlassen) und re-gilt der Auswahl, wenn der Benutzer bricht den übergang. Angepasst von einer Lösung von Caleb Davenport in Swift. Nur getestet auf iOS 9. Getestet, wie die Arbeit mit user driven (streichen) der übergang und die old-style "Zurück" - button Tippen.
In der
UITableViewController
Unterklasse:InformationsquelleAutor der Antwort nevan king
Nach dem ausführen in das selbst heute fand ich heraus, dass dies anscheinend ein ziemlich bekanntes problem mit UITableView, seine Unterstützung für die interaktive navigation übergänge ist leicht gebrochen. Die Leute hinter Castro geschrieben haben eine hervorragende Analyse und Lösung an: http://blog.supertop.co/post/80781694515/viewmightappear
Beschloss ich, Ihre Lösung, die auch hält abgesagt übergänge:
InformationsquelleAutor der Antwort CodeStage
Können Sie versuchen,
in einem UITableViewController oder
in viewWillAppear, vielleicht vor dem Aufruf von [super viewWillAppear:animated];
Wenn Ihr UItableView ist nicht innen ein UITableViewController müssen Sie deaktivieren Sie die Zellen manuell:
InformationsquelleAutor der Antwort falsecrypt
Ich bin mit
am Ende der Methode
Wie diese:
InformationsquelleAutor der Antwort Evgeny
Einfache Swift 3 Antwort:
InformationsquelleAutor der Antwort SteffenK
Verwenden
[tableView deselectRowAtIndexPath:indexPath animated:YES];
code in
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath method
InformationsquelleAutor der Antwort Pradhyuman sinh
Ich habe eine sehr einfache Lösung für dieses problem, dass das default-Verhalten funktioniert, wie es sollte. Ich war nicht zufrieden mit den Lösungen, die mit
deselectRowAtIndexPath
da die resultierende visuelle Effekt war etwas anders.Alles, was Sie tun müssen, um zu verhindern, dass dieses seltsame Verhalten ist, um neu zu laden Sie die Tabelle, wenn die Ansicht angezeigt wird:
InformationsquelleAutor der Antwort quentez
Codestage Antwort, Swift 3.
notifyWhenInteractionEnds
ist veraltet.InformationsquelleAutor der Antwort Mike
Basierend auf Rhult's code habe ich ein paar änderungen vorgenommen.
Diese Implementierung erlaubt dem Anwender, zu stornieren, streichen Sie zurück und halten noch ausgewählt für die Zukunft streichen wieder deaktivieren animation
InformationsquelleAutor der Antwort Simon
Rhult Lösung perfekt funktioniert auf iOS 9.2. Dies ist die Implementierung in Swift:
Deklarieren Sie eine variable in Ihrem
MasterViewController
zum speichern der IndexPath:Dann kann man den code in eine Erweiterung für Klarheit:
InformationsquelleAutor der Antwort Kymer
Codestage zur Verfügung gestellt mit Abstand die beste Antwort suchen, so dass ich beschloss, es zu konvertieren in Swift 2.
InformationsquelleAutor der Antwort AppreciateIt
Für swift
InformationsquelleAutor der Antwort Sofeda