Im en utilisant un collectionView, dans la première ligne indexPath j'ai un résumé des données du premier viewController récupéré de Firebase, à partir du second j'ai caché tout l'étiquette et montré d'autres, mais quand je retourne à la première vue et retour dans la collection Afficher les étiquettes disparaissentLes étiquettes disparaissent de la CollectionViewCell
C'est un problème avec des contraintes ou est mon mauvais code? Vous pouvez regarder côté droit 3 étiquettes disparaissent
Avant:
Après:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cella = collectionView.dequeueReusableCell(
withReuseIdentifier: "cella", for: indexPath) as! ChatViewCell
cella.LabelEur.text = ""
if (indexPath.row == 0){
collectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionViewScrollPosition.centeredHorizontally)
cella.layer.backgroundColor = UIColor("#FFA000").cgColor
cella.Label1.textColor = .white
cella.LabelR.textColor = .white
cella.Date.textColor = .white
cella.Time.textColor = .white
cella.City.textColor = .white
let user = Chat[indexPath.row]
cella.Label1.text = user.sender
cella.LabelEur.isHidden = true
cella.euro.isHidden = true
cella.Tipo.isHidden = false
cella.Quantita.isHidden = false
cella.Misure.isHidden = false
cella.TIpo2.isHidden = false
cella.Label1.isHidden = false
cella.labeldata.isHidden = true
cella.labelora.isHidden = true
cella.Date.text = user.date
cella.Time.text = user.time
if user.caricoc == "1" {
cella.CaricoC.isHidden = false
} else { cella.CaricoC.isHidden = true }
if user.runflat == "1" {
cella.RunFlat.isHidden = false
} else { cella.RunFlat.isHidden = true }
if user.rinforzato == "1" {
cella.Rinforzato.isHidden = false
} else { cella.Rinforzato.isHidden = true }
cella.montaggio.isHidden = true
cella.oraMontaggio.isHidden = true
cella.Distanza.isHidden = true
cella.categoria.isHidden = false
cella.categoria.text = user.cat
cella.TIpo2.text = user.tipo
cella.Misure.text = user.model
cella.Tipo.text = user.marca
cella.Quantita.text = user.numero
cella.LabelR.text = "Ha inserito una richiesta"
//key2 = user.key
misure1 = user.model
caricC = user.caricoc
rnf = user.runflat
rinf = user.rinforzato
tipo = user.tipo
marca = user.marca
quantita = user.numero
cat = user.cat
//last = user.lastname
lat = user.lat
lng = user.lng
}else{
}
if (indexPath.row >= 1){
let user = Chat[indexPath.row]
cella.Label1.text = ""
cella.Date.text = user.date
cella.Time.text = user.time
cella.RunFlat.isHidden = true
cella.Rinforzato.isHidden = true
cella.CaricoC.isHidden = true
cella.LabelEur.isHidden = false
cella.categoria.isHidden = true
cella.euro.isHidden = false
cella.TIpo2.isHidden = true
cella.Tipo.isHidden = true
cella.Quantita.isHidden = true
cella.labelora.isHidden = false
cella.labeldata.isHidden = false
cella.montaggio.isHidden = false
cella.oraMontaggio.isHidden = false
cella.Distanza.isHidden = false
cella.oraMontaggio.text = user.oraApp
cella.montaggio.text = user.dataApp
cella.Misure.isHidden = true
let prezzo: Float = (Float(user.text)?.multiplied(by: 1.10))!
let nenno: Float = 3.234
let prezzo2 = String(describing: NSDecimalNumber(string: String(format:"%.0f", prezzo)))
cella.LabelEur.text = prezzo2
cella.LabelR.isHidden = true
cella.layer.backgroundColor = UIColor("#FFFFFF").cgColor
let posInt = Int(user.positiondef)
if (posInt! <= 5) {
cella.Distanza.text = "A meno di 5km"
} else if (posInt! <= 10) {
cella.Distanza.text = "A meno di 10km"
} else if (posInt! <= 15) {
cella.Distanza.text = "A meno di 15 km"
}
/*
if (user.positiondef != nil) {
if (user.positiondef.hasPrefix("0")) {
cella.Distanza.text = "Nelle vicinanze"
} else {
cella.Distanza.text = user.positiondef+"KM"
}
}*/
cella.City?.text = user.city
self.Chat = self.Chat.sorted{ $0.text.compare($1.text, options: .numeric) == ComparisonResult.orderedAscending }
}
return cella
}
Pourquoi dans le storyboard les jeux sont-ils noirs par défaut? – GaTz
Parce qu'il s'agit de "cellules réutilisables". Lorsque vous appelez "collectionView.dequeueReusableCell" Vous prenez une cellule précédemment créée et définissez de nouvelles données dessus. Vous ne le créez pas à partir du storyboard. La cellule contiendra toujours toutes les anciennes données. (Avec les paramètres de l'étiquette, tels que la couleur du texte) – Jboullianne
Je pense que vous avez tout à fait raison @Jboullianne +1 –