2017-05-17 1 views
1

J'ai une tableview pour montrer quelques produits, les produits peuvent avoir ou non un rabais, les remises (max 2) sont groupées dans un stackView, donc dans le code que je cache ou montre la vue de la pile si le produit a un rabais.Stackview est caché dans la cellule tableview réutilisable après avoir inséré des cellules

Le problème vient quand j'insère une nouvelle cellule, soudainement la cellule qui détient un produit avec remise n'a pas la vue de la pile visible.

I essayé avec les 2 méthodes pour dequeue cellules, lors de l'utilisation,

tableView.dequeueReusableCell(withIdentifier:, forIndexPath) 

le problème se produit lors de l'insertion mais lors de l'utilisation,

tableView.dequeueReusableCell(withIdentifier:) 

le problème à l'insertion de disparaître, mais se produit à nouveau lorsque je fais défiler vers le bas pour rendre la cellule non visible et revenir en arrière.

C'est le code dans la cellule pour la ligne:

let basicCell = tableView.dequeueReusableCell(withIdentifier: "basicCell") as! BasicCell 
     if product.discounts{ 
      basicCell.discountType = DiscountType.lineDiscount 
     }else{ 
      basicCell.discountType = DiscountType.none 
     } 
     basicCell.configureCellType() 

     return basicCell 

Et le code de configureCellType():

func configureCellType(){ 
    switch discountType! { 
    case .none: 
     discountStackView.isHidden = true 
    case .lineDiscount: 
     groupDiscountView.isHidden = true 
    case .groupDiscount: 
     lineDiscountView.isHidden = true 
    case .bothDiscounts: break 
    } 
} 
+0

Veuillez montrer votre implémentation 'cellForRow'. – shallowThought

+0

appel cell.layoutIfNeeded() avant la déclaration de retour .. –

+0

@Umer qui n'a pas travaillé – user3407533

Répondre

0

bien le problème est en fait dans votre fonction configureCellType(). Comme chaque cas cache une vue de pile .. Check it out

+0

En fait, je cache seulement une pile voir les autres choses sont les vues à l'intérieur de la vue de sac – user3407533

+0

Merci, votre commentaire m'a donné l'idée de le résoudre – user3407533

+0

En fait Stack View déterminer sa hauteur de contenu par ses vues intérieures , si vous les cachez complètement, il ne sera pas visible .. J'espère que vous avez obtenu cela –