Il est possible d'ajouter un J'ai un code prêt et j'essaie de faire cette fonction. S'il vous plaît aidez-moi! p> merci. p> p> P> Sélectionner l'option code> dans la tableView plusieurs checks ...?
5 Réponses :
Vous devez d'abord activer plusieurs sélection pour la vue de la table sélectionner toutes les lignes p> pour activer la coche lorsqu'une ligne est Sélectionné: p> Supprimez également la coche lorsqu'il est désélectionné: p> Veuillez voter cette réponse si elle aide. Merci. P> p>
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 !!
Modifiez d'abord votre zone en classe afin que ce type de référence sera de référence modifie maintenant votre logique DidSelect Logic P> func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let area = areas[indexPath.row]
area.isSelected.toggle()
if area.name == "Select all"{
areas = areas.map{$0.isSelected = true}
}
tableView.reloadRows(at: [indexPath], with: .none)
let selectedAreas = areas.filter{$0.isSelected}.map{$0.name}
print(selectedAreas)
}
Fonctionne très bien!! Peut-être savez-vous ajouter une option de recherche? Je vais marquer comme la bonne réponse !!
Vous n'avez pas besoin de changer la structure en un type de référence.
Qu'est-ce que vous voulez rechercher?
Savez-vous comment ajouter une option de barre de recherche? Rechercher des éléments dans la liste.
Soit Arrsearchedresult = zones.Filter {$ 0.Name.Contains ("Your_search_text")}
RaywenderLich.com/... Lien pour l'ajout de tutoriel de barre de recherche
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: 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)
}
parfait!! Peut-être que vous pouvez m'aider si vous savez comment ajouter une option de recherche?
in vous pouvez aussi faire daidselectrow code>:
tableview.reloaddata () code>, qui recharge la vue de la table entière au lieu de juste les rangées qui ont besoin de rechargement. P> p>
Fonctionne très bien!! Peut-être savez-vous ajouter une option de recherche? Je vais marquer comme la bonne réponse !!
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}
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 code> et déplacer
selectall code> 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.
Dupliqué possible de iOS: TableView Sélection multiple - AccessoireCheckMark Vérification des cellules réutilisables a >