0

J'ai une vue de table et je voudrais que l'utilisateur sélectionne seulement un élément de la vue de table, alors je veux ajouter une coche à la cellule. En même temps, je veux aussi que la coche sur les autres cellules disparaisse ainsi le. l'utilisateur ne peut en sélectionner qu'un seul à la fois. Ensuite, je veux enregistrer les données (de préférence en utilisant UserDefaults). Comment je fais ça?Comment enregistrer l'état de la coche d'accessoire UITableViewCell dans Swift 3

Répondre

1

Créez une variable de classe de type IndexPath. Dans votre méthode cellForRowAt, définissez le type d'accessoire .checkmark uniquement si le chemin d'index correspond à la variable de classe et à .none dans le cas contraire. Dans la méthode didSelectRowAt la mise à jour de indexPath variable sélectionnée et juste recharger le tableview

+0

J'ai eu cette erreur, capture d'écran de code et la sortie du débogueur ici: https: //www.dropbox .com/s/jlqucl40piso7e5/save% 20checkmark% 20accessory.png? dl = 0 –

+0

Vous n'avez pas besoin d'enregistrer indexPath dans les valeurs par défaut ... vous pouvez simplement créer une variable de classe. Dans la capture d'écran, vous stockez le chemin de l'index dans les valeurs par défaut de l'utilisateur ... Quelles données souhaitez-vous enregistrer dans les valeurs par défaut de l'utilisateur? –

+0

Je souhaite enregistrer le chemin d'index pour la ligne sélectionnée de sorte que lorsque j'actualise la vue tabulaire, je puisse obtenir le chemin d'index à partir des valeurs par défaut et définir la coche d'accessoire en fonction de ce chemin d'index –

0

, vous devez utiliser cette façon

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{ 
    let sgp : UITableViewCell = tableView.cellForRow(at: indexPath)! 
    sgp.accessoryType = .checkmark 
}