Ich habe eine TabelleView mit allowsMultipleSelection
auf True festgelegt. In einer benutzerdefinierten UITableViewCell-Unterklasse habe ich überschrieben. Dies wird aufgerufen, wenn ich Zellen auswähle (durch Antippen), und auch wenn ich scroll, wenn Zellen wiederverwendet werden. Nun würde ich erwarten, dass der Anwendungsfall des Parameters animated
so ist, dass die Auswahl für die Benutzerinteraktion animiert werden kann und nicht animiert werden kann, wenn sich der Zustand aufgrund der Wiederverwendung von Zellen einfach ändert. animated
wird jedoch immer als falsch übergeben, unabhängig davon, wie dies aufgerufen wird. Ist animated
immer wahr, wenn dies von UIKit-Sachen aufgerufen wird?Lassen Sie UITableView Auswahl animieren, wenn vom Benutzer initiiert
Natürlich kann ich explizit zwischen Benutzer-Interaktion und Zell Wiederverwendung unterscheidet durch (a) allowsMultipleSelection
Entfernen, (b) die Umsetzung UITableViewDelegate
‚s didSelect
und didDeselect
Methoden, und (c) Aufruf setSelected
mit animated: true
aus diesen beiden Methoden. Aber das scheint eine Menge nativen Verhaltens zu duplizieren, nur um ein kleines Detail zu ändern; Ich könnte eine Delegiertenimplementierung speichern und meinen Code intuitiv lesen lassen (zumindest für mich), wenn ich irgendwie erreichen könnte, dass das TableView animated: true
standardmäßig übergibt, wenn die Auswahl oder Abwahl vom Benutzer initiiert wird. Gibt es eine Möglichkeit, TableViews dies zu tun?
EDIT: nicht zu erwähnen, ausdrücklich setSelected
von dem didSelect
und didDeselect
Delegatmethoden Aufruf wirklich nicht funktioniert, weil es immer noch auch durch die Tableview genannt wird.
Ich spreche eigentlich über das, was passiert, wenn ein Benutzer auf eine Zelle tippt. Ich selbst führe keinen Code; Der Tap wird von der TableView erkannt, und 'setSelected' wird automatisch mit Parametern aufgerufen, die ich anscheinend nicht kontrollieren kann. –
Wenn ich richtig verstanden habe, müssen Sie super mit den richtigen Parametern aufrufen. Versuchen Sie folgendes: override func setSelected (_ ausgewählt: Bool, animiert: Bool) { super.setSelected (ausgewählt, animiert: true) } – lopes710
Nein, das ist nicht was ich meine. Ich möchte _use_ 'animated' verwenden, um zu entscheiden, ob meine benutzerdefinierte Version von' setSelected' eine Animation ausführen soll oder nicht. Ich möchte also, dass das TableView mit "animated = true" aufruft, wenn ich auf eine Zelle tippe. Ich sehe nicht, dass irgendetwas, was ich in meiner Implementierung von 'setSelected' ändere, die Parameter beeinflussen wird, mit denen es aufgerufen wird. Sagen wir es so: 'setSelected' wird automatisch (nicht von mir) aufgerufen, aber immer mit' animated = false' aufgerufen. Kann ich etwas tun, so dass es von der tabellarischen Ansicht mit animated = true aufgerufen wird (ohne es selbst aufzurufen)? –