-1
votes

SWIFT: Checkmark multiple TableView - Sélectionnez toutes les lignes

Il est possible d'ajouter un Sélectionner l'option dans la tableView plusieurs checks ...?

J'ai un code prêt et j'essaie de faire cette fonction. S'il vous plaît aidez-moi!

Code: xxx

merci.


5 Réponses :


1
votes

Vous devez d'abord activer plusieurs sélection pour la vue de la table xxx

sélectionner toutes les lignes xxx

pour activer la coche lorsqu'une ligne est Sélectionné: xxx

Supprimez également la coche lorsqu'il est désélectionné: xxx

Veuillez voter cette réponse si elle aide. Merci.


1 commentaires

Fonctionne très bien!! Peut-être que vous pouvez m'aider si vous savez comment ajouter une option de recherche? Je vais marquer comme la bonne réponse !!




1
votes

Vous devez vérifier si l'utilisateur a sélectionné la première ligne ("Sélectionner tout") et mettez à jour les autres lignes en conséquence: xxx pré>

Recommandation forte> p>

Pour séparer les préoccupations visuellement, vous pouvez également utiliser une seule section de vue de table pour la ligne "Sélectionner toutes". Dans ce cas, des modifications supplémentaires sont nécessaires: P>

var areas = [
    // you do not need an area for "Select all" any longer
    Area(name: "a"),
    Area(name: "b"),
    Area(name: "c"),
    Area(name: "d")
]

var allSelected: Bool {
    // helper var to see if all areas are currently selected
    return areas.filter({!$0.isSelected}).isEmpty
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 2
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    switch section {
    case 1: return "Areas"
    default: return nil
    }
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch section {
    case 0: return 1 // select all
    case 1: return areas.count
    default:
        // we should never get here
        fatalError()
    }
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.selectionStyle = .none

    if indexPath.section == 0 {
        cell.textLabel?.text = "Select all"
        cell.accessoryType = allSelected ? .checkmark : .none
    } else {
        let area = areas[indexPath.row]
        cell.textLabel?.text = area.name
        cell.accessoryType = area.isSelected ? .checkmark : .none
    }

    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.section == 0 {
        // (de-)select all
        let shouldSelect = !allSelected
        for i in 0..<areas.count {
            areas[i].isSelected = shouldSelect
        }
    } else {
        areas[indexPath.row].isSelected.toggle()
    }

    tableView.reloadRows(at: tableView.indexPathsForVisibleRows ?? [], with: .automatic)
}


1 commentaires

parfait!! Peut-être que vous pouvez m'aider si vous savez comment ajouter une option de recherche?



0
votes

in daidselectrow : xxx

vous pouvez aussi faire tableview.reloaddata () , qui recharge la vue de la table entière au lieu de juste les rangées qui ont besoin de rechargement.


1 commentaires

Fonctionne très bien!! Peut-être savez-vous ajouter une option de recherche? Je vais marquer comme la bonne réponse !!



0
votes

Si le Selectallall code> est à l'index 0 Vérifiez la ligne, puis définissez tous les membres isselected code> sur true code> et rechargez toute la table

areas.indices.dropFirst().forEach{areas[$0].isSelected = true}


6 commentaires

Merci beaucoup!! Est-il possible de voir les éléments sélectionnés en haut de la liste?


Oui, triez les éléments par isselected et déplacer selectall en haut de la liste


Pouvez-vous s'il vous plaît me montrer comment faire? Je vais vous marquer comme la bonne réponse !!


Pour trier les objets, c'est des trucs très basiques.


Pouvez-vous m'aider à ajouter une option de barre de recherche s'il vous plaît? C'est la dernière chose dont j'ai besoin


Jetez un oeil à Stackoverflow.com/Questtions/57907282/... . C'est assez semblable à ce que vous allez accomplir.