J'ai donc une collectionView qui contient une gamme de Tendances Les utilisateurs peuvent cliquer sur cette photo. Lorsque la cellule cliquette est cliquée, une coche apparaît que l'utilisateur sache qu'ils ont sélectionné cette catégorie et leur photoïde est ensuite entré dans les enfants sélectionnés dans la base de données.
Les utilisateurs ont la possibilité de modifier leur photo si elles ont décidé qu'ils veulent supprimer leur photo d'une certaine catégorie. Lorsque je sélectionne Modifier le profil, les cellules qui doivent être sélectionnées (celles que je choisis lors du téléchargement de la photo) sont non sélectionnées. P>
ou dit par exemple, j'ai déjà une photo téléchargée mais je veux maintenant le présenter, quand je vais à éditer une photo et appuyez sur une catégorie la coche semble me dire que cette catégorie est choisie. Lorsque je appuyais sur Enregistrer la photo est ajouté à l'enfant choisi dans la base de données comme prévu, mais lorsque je clique sur Modifier le profil à nouveau et que la vue est présentée. Les cellules que j'ai choisies il y a 10 secondes sont maintenant non sélectionnées. p>
Comment puis-je maintenir un état sélectionné ou désélectionné même après avoir rejeté le contrôleur d'affichage? P>
class TrendsCollectionCell: UICollectionViewCell { override var isSelected: Bool{ didSet{ if isSelected { setSelectedUI() } else{ setUnSelectedUI() } } } func setSelectedUI(){ trendCheckmark.isHidden = false trendCheckmark.tintColor = .white } func setUnSelectedUI(){ // reset to deafault, hide checkmark trendCheckmark.isHidden = true } }
3 Réponses :
Vous pouvez stocker l'index sélectionné dans le cadre d'un État, puis stocker / utiliser cet état comme vous le souhaitez. Vous le feriez en ayant une propriété sélectionnée code> ou, si vous avez plus de propriétés, vous pouvez avoir une autre structure
Viewstate code> que vous mettez à jour dans
dactSelectitemat code >. Vous avez ensuite un gestionnaire d'état en dehors de vos contrôleurs d'affichage (recommandé) ou vous transmettez l'état entre les contrôleurs d'affichage (si vous avez une application simple). P>
Bien que chaque réponse soit à peu près la même chose que vous avez répondu en premier. Merci beaucoup, cela a fini de travailler.
Trois étapes nécessaires pour maintenir l'état de cellule sélectionné. Ceci applicable pour 1. strong> Maintenez la dernière index sélectionné pour la cellule sélectionnée. P>
3. strong> pour chaque Une explication supplémentaire est sur ma réponse précédente
https://stackoverflow.com/questions/59293617/ multiples-cellules-sélectionné-activé-rouler-cellules-problèmes-problème / p> View de table code> et
Vue de la collection code> p>
cellindex code> sur chaque appel a sélectionné appel. p>
Cellfroworindex code> Vérification de la méthode si ce
sélectionné code> cellule ou non. p>
Je ne recommande jamais d'utiliser une variable de cellule sélectionnée pour détecter la sélection des cellules car cette variable ne décrit pas complètement l'état, en raison du mécanisme de déséquilibre et de recyclage qui fonctionne pour Uicollectionview et uableview, donc je recommande à chaque fois que tout l'état de vos modèles , Donc, vous avez 2 options
Importation de fondation P>
@IBOutlet weak var numberLable: UILabel! @IBOutlet weak var backGroundview: AnimatableView! static let identiefier: String = "NumberCollectionViewCell" static let nibName: String = "NumberCollectionViewCell" override func awakeFromNib() { super.awakeFromNib() // Initialization code } override var isSelected: Bool { didSet { setupSelection(iseSelected: isSelected) } } private func setupSelection(iseSelected: Bool) { backGroundview.backgroundColor = isSelected ? UIColor("#4d8ec5") : UIColor("#ffffff") backGroundview.borderColor = isSelected ? UIColor.clear : UIColor("#707070") numberLable.textColor = isSelected ? UIColor("#ffffff") : UIColor("#444e53") } func configure(number: Int,isSelected: Bool) { numberLable.text = "\(number)" setupSelection(iseSelected: isSelected) }
Cela vous dérange-t-il de me donner un exemple sur la façon de réserver l'index sélectionné? C'est là où je suis coincé à
Dans l'exemple, je veux juste afficher la collection de cartes numériques
Désolé, il suffit d'avoir du mal à enrouler ma tête autour de cela. Je vais donc enregistrer un tableau des chaînes sélectionnées et le numéro de l'indice également? Jamais travaillé avec Sauvegarde de l'état avec DisSélectionnez Code> Donc, je m'excuse si mes questions sont des connaissances courantes.
Je peux déjà afficher la collection de catégories que je souhaite, lorsque je sélectionne / désélectionne la cellule, la coche se cache et affiche comme prévu. Lorsque je télécharge la photo, la photo est également affichée dans la catégorie correcte que j'ai sélectionnée. Cependant, lorsque je vais à éditer cette photo pour supprimer la photo de la catégorie I sélectionnée, la coche .Ciddridique = true code> quand il doit enregistrer et conserver la coche.
Montrez votre cellule pour l'article à IndexPath