Alle Checkmarks löschen in tableView?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich vermute, dass das Selektieren auch in Deiner DataSource z. B. durch ein Attribut abgebildet wird. Also einfach über alle DataSource-Elemente, welche die TableView abbildet, iterieren und das Attribut zurücksetzen. Dann die TableView refreshen, fertig.

    Alternativ kannst Du auch über alle Zeilen der TableView iterieren und deren deselectRowAtIndexPath:-Methode aufrufen.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • chulio1985 schrieb:

    wie genau sollte da dann der Code aussehen?
    Das ist jetzt nicht Dein Ernst, oder: Erstens ist meine Kristallkugel kaputt und ich habe keine Ahnung, wie z. B. Deine DataSource aussieht oder Deine TableView befüllt wird. Zweitens bis Du doch der Programmierer Deines Codes, dann programmiere ihn auch. Die o.g. Hinweise sind Hilfe zur Selbsthilfe, mehr gibt‘s bei mir nicht…

    Bei konkreten Fragen gibt‘s auch konkrete Antworten.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MCDan schrieb:

    Wie sieht denn der aktuelle Code zum Selektieren der Einträge aus? ;)
    Hallo,

    Also hier mal das Struct und Array was ich habe/ und in der tableView darstelle: (Name1, 2 usw. als Beispiel)

    Quellcode

    1. //STRUCT
    2. struct Area {
    3. let name : String
    4. var isSelected : Bool
    5. init(name : String, isSelected : Bool = false) {
    6. self.name = name
    7. self.isSelected = isSelected
    8. }
    9. }
    10. //ARRAY
    11. var areas = [Area(name: "Name1"), Area(name: "Name2"), Area(name:"Name3"), Area(name: "Name4"), Area(name: "Name5")]
    Alles anzeigen



    Der code zum selektieren und deselektieren unter "didSelectRowAt" sieht folgendermaßen aus:

    Quellcode

    1. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    2. //CHECKMARKS
    3. areas[indexPath.row].isSelected.toggle()
    4. tableView.reloadRows(at: [indexPath], with: .none)
    5. }

    Unter "cellForRowAt" hab ich dann folgendes:

    Quellcode

    1. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    2. let cell = myTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell
    3. let area = areas[indexPath.row]
    4. cell.textLabel?.text = area.name
    5. cell.accessoryType = area.isSelected ? .checkmark : .none
    6. }



    Dann habe ich oben eine Navigationsleiste mit einem "Reset All" Button mit dem ich alle Checkmarks was gesetzt sind wieder zurücksetzen will, und jetzt stehe ich an, weiß nicht wie ich hier weiter machen soll...

    Quellcode

    1. @IBAction func resetButtonTapped(_ sender: UIBarButtonItem) {
    2. //...
    3. }

    Ich hoffe jetzt habe ich es besser erklärt ;)

    LG
  • Ok, dann kannst Du in resetButtonTapped einfach über die Einträge in areas iterieren, z.B. per

    Quellcode

    1. for area in areas {
    2. }

    , und per isSelected = false die Auswahl in den einzelnen Areas zurücksetzen.

    Mit einem reloadData() auf dem Table View wird dann der Inhalt neu geladen und kein Eintrag sollte mehr markiert sein.
  • Du willst nicht auf die Zellen, sondern auf Deine Datenquelle areas zugreifen, in dem Array über alle Elemente area in einer Schleife iterieren und die Eigenschaft isSelected jedes Elementes zurücksetzen. @MCDan hat Dir den Code schon fast geschrieben ... ein Dreizeiler (den man mit Swift-Mitteln bestimmt noch mehr kürzen kann).

    Wenn die Datenquelle dann geändert wurde, die TableView per reloadData() aktualisieren ... auch das steht schon oben.

    Bitte lies Dir unsere Hilfestellungen auch genau und frag' nach, wenn Du sie nicht verstehst.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MyMattes ()