Ich entwickle gerade eine App in Xcode. Innerhalb dieser App möchte ich dem Benutzer die Möglichkeit geben, den Inhalt von Table View Cells (Objekten) durch mehrere Checkboxen zu filtern [siehe Bild 1]. oderXCODE-Filtertabelle Zellen mit mehreren Kontrollkästchen anzeigen
Jedes Objekt, das ist in der Tabellenansicht gezeigt hat 8-Eigenschaften, die den Wert 1 haben. Die Kontrollkästchen im Filterbereich stehen in Beziehung zu diesen 8 Eigenschaften.
Like:
- Checkbox1 = PROP1
- Checkbox2 = prop2
- Checkbox3 = prop3
- etc ..
Objekte Arrays:
var objects:[Object] = [
Object(name: "Lorem Ipsum", prop1: "3", prop2: "1", prop3: "1", prop4: "1", prop5: "1", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "1", prop2: "1", prop3: "1", prop4: "3", prop5: "1", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "1", prop2: "2", prop3: "2", prop4: "2", prop5: "2", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "2", prop2: "3", prop3: "3", prop4: "1", prop5: "3", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "1", prop2: "3", prop3: "1", prop4: "2", prop5: "2", prop6: "3", prop7: "2", prop8: "1"),
Object(name: "Lorem Ipsum", prop1: "2", prop2: "3", prop3: "1", prop4: "1", prop5: "1", prop6: "1", prop7: "3", prop8: "2")
]
Wenn alle Kontrollkästchen deaktiviert sind, zeigen alle Objekte die gleiche Standardfarbe (blau).
Aber wenn einer des Kontrollkästchen aktiviert ist, muss die Filter die Farbe der Objekte ändern, die die entsprechende Eigenschaft auf das ausgewählte Kontrollkästchen haben, als Wert oder . Wenn der Wert ist 2 = Wechsel zur grünen Farbe, und wenn der Wert ist 3 = zu lila Farbe ändern.
Also zum Beispiel; wenn checkbox2 ausgewählt ist, werden alle Objekte mit prop2 als oder sollte eine andere Farbe haben [siehe Bild 2]
ich forschte, konnte aber nicht einen Weg, es zu tun finden und Bring es zum Laufen. Wenn jemand helfen könnte, wäre das erstaunlich!
EDIT-NOTE: Wenn der Benutzer zwei Kontrollkästchen auswählt, beispielsweise 1 und 2, müssen die Objekte mit dem Wert 3 auf Eigenschaft 1 oder 2 die Farbe Lila haben, auch wenn sie in einer dieser Eigenschaften den Wert 2 haben . Also Wert 3 "wiegt" mehr als 2
Können Sie die aktuelle Zelle, in der die Kontrollkästchen angezeigt werden, nicht einfach neu laden? 'Tabellenansicht.reloadRows (at: [currentIndexPath], mit: .automatic) ' – Nathaniel
Ja, das wäre möglich, aber dann muss ich viele Arrays richtig rendern? Und wenn der Benutzer mehrere Kontrollkästchen auswählt. – Maarten
Wenn ich Ihre Frage richtig verstanden habe, denke ich, dass Sie keine andere Wahl haben, als die TabelleView-Daten jedes Mal neu zu laden, wenn eine Checkbox ausgewählt/abgewählt ist, es sei denn, Sie möchten jeder Zelle Beobachter hinzufügen ... was übertrieben erscheint .... Wenn Sie eine glattere Animation für die Aktualisierung wünschen, verwenden Sie 'tableView.ReloadSections (IndexSet (integer: 0), mit: .automatic)' und wählen Sie die gewünschte Animation aus. – Nathaniel