2017-01-06 2 views
1

J'ai UIStackView dans UITableViewCell et j'ai quatre longues étiquettes de texte dedans. Dans la première charge, je montre seulement la première étiquette avec 44 hauteur dans la cellule et cacher les trois autres et StackView montre correctement. Puis quand je clique sur tableViewCell j'ai besoin de développer la cellule et montrer trois autres étiquettes. Je les montre et recharge TableView mais mon StackView a zéro hauteur après cela et toutes les quatre étiquettes ont aussi une hauteur nulle. J'ai rencontré ce problème uniquement avec IOS 10.1 et lorsque j'utilise des étiquettes avec du texte court, StackView fonctionne bien.UIStackAfficher la hauteur zéro bien que j'aie du contenu

Ceci est mon code:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var cell = tableView.cellForRowAtIndexPath(indexPath) as! AboutUsTableViewCell 
    cell.firstLabel.hidden = isExpanded 
    cell.secondLabel.hidden = isExpanded 
    cell.thirdLabel.hidden = isExpanded 
    isExpanded = !isExpanded 
    tableView.reloadData() 
} 

This is my xib

This is how looks like before click

This is after click

Merci à tous!

Répondre

0

Définissez le nombre de lignes Étiquettes sur 0 et ajoutez le code ci-dessous à la méthode viewDidLoad.

self.tableView.estimatedRowHeight = 44.0 //or cell height 
self.tableView.rowHeight = UITableViewAutomaticDimension 
+1

je l'ai déjà mis UITableViewAutomaticDimension et toutes mes étiquettes a 0 Nombre de jeux de lignes. Comme je l'ai dit, tout fonctionne parfaitement pour IOS 9 et IOS 10.2. J'ai un problème seulement avec IOS 10.1 –

1

Vous devez mettre à jour le tableau après avoir modifié les propriétés isHidden. Cela devrait faire un tour.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var cell = tableView.cellForRowAtIndexPath(indexPath) as! AboutUsTableViewCell 
    cell.firstLabel.hidden = isExpanded 
    cell.secondLabel.hidden = isExpanded 
    cell.thirdLabel.hidden = isExpanded 
    isExpanded = !isExpanded 
    tableView.beginUpdates() 
    tableView.endUpdates() 
} 

Vérifiez également this article sur l'utilisation de l'intérieur UIStackViewUITableView cellules