2017-08-02 3 views
0

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:

First

Après:

Second

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 

    } 

Répondre

2

Je crois que les contraintes sont correctes. Ils ne devraient pas changer entre les transitions de viewController. Le problème peut être avec l'attribut "textColor" de l'étiquette. Dans la première cellule, vous définissez la couleur sur blanc. Dans la seconde, ils devraient être noirs. Je crois qu'ils ne sont pas affichés simplement parce qu'ils sont de la même couleur que l'arrière-plan. Essayez de définir le textColor des étiquettes à noir dans la deuxième instruction "if". Les vues de collection utilisent des cellules réutilisables, de sorte que textColor de l'étiquette peut toujours être blanc à partir d'une utilisation antérieure.

+0

Pourquoi dans le storyboard les jeux sont-ils noirs par défaut? – GaTz

+0

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

+0

Je pense que vous avez tout à fait raison @Jboullianne +1 –