Pour masquer une sous-vue dans UIStackView
, il est préférable de définir isHidden
sur true ou d'utiliser removeArrangedSubview
et de supprimer la sous-vue du parent Stackview
à la place ?
J'utilise un Stackview pour organiser mes UIElements dans la cellule tableView. J'ai actuellement un parent StackView et un childStackview arrangés à l'intérieur. La vue enfant doit être affichée ou masquée en fonction d'une condition. Je mets la propriété isHidden
de la vue enfant à true lorsque la condition devient vraie.
Lorsque je défile et que de nouvelles cellules deviennent visibles, je reçois les messages suivants dans la console. L'application ne plante pas.
NSLayoutConstraint: 0x600000093470 'UISV-canvas-connection' UIStackView: 0x7fd4527201b0.top == UILabel: 0x7fd452720370'Day Off - Rest and Sleep ... '. Top (active)
Créez un point d'arrêt symbolique à UIViewAlertForUnsatisfiableConstraints pour intercepter cela dans le débogueur. Les méthodes de la catégorie UIConstraintBasedLayoutDebugging sur UIView répertoriées dans <UIKit/UIView.h>
peut également être utile. [LayoutConstraints] Impossible de satisfaire simultanément les contraintes. Probablement au moins une des contraintes dans la liste suivante est celle que vous ne voulez pas.
Essaye ça:
Tentera de récupérer en brisant la contrainte
Pour répondre à votre première question, si vous n'avez pas besoin d'afficher la sous-vue, la chose la plus logique à faire serait de la supprimer à l'aide de removeArrangedSubview(UIView)
. Comme vous le savez peut-être, la vue de pile mettra automatiquement à jour sa disposition chaque fois que des vues sont ajoutées, supprimées, insérées ou masquées/non masquées.
L'avertissement que vous obtenez dans la console au sujet des contraintes peut ou non être lié à tout ce que vous avez implémenté pour la sous-vue en ce moment. L'avez-vous mentionné parce que vous pensez qu'il pourrait être lié?
J'espère que cela pourra aider.