web-dev-qa-db-fra.com

Masquage de la sous-vue dans UIStackview dans iOS

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:

  1. examinez chaque contrainte et essayez de comprendre à quoi vous ne vous attendez pas;
  2. recherchez le code qui a ajouté la ou les contraintes indésirables et corrigez-le. ("", "", "", "", "", "", "")

Tentera de récupérer en brisant la contrainte

14
jay

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.

15
Jim