Pouvez-vous réellement lier des contraintes à des controllers de vue complètement différents?

Imaginez que vous avez un écran qui a un certain nombre de controllers de vue (avec des vues de conteneur, ou peu importe).

(Si vous le souhaitez, pensez à une application pour iPad avec de nombreuses grandes zones compliquées, chacune avec ses propres vues de sous-conteneurs pour les lists, les controls, etc.)

Même – il se peut que vous ayez des VC qui sont cachés, cachés hors écran, peut-être même juste en cache et non présentés, ou vous pouvez avoir un certain nombre d'écrans «empilés» les uns sur les autres, certains ne sont même pas visibles.

Donc dis que tu as une vue v

var v: UIView 

dans l'un de ces controllers de vue, et une vue w

  var w: UIView 

dans un controller de vue totalement différent .

Pour une raison quelconque, vous voulez que les deux éléments aient la même largeur , à l'écran.

En réalité. Pouvez-vous NSLayoutConstraint un à l'autre ??

(Évidemment, vous ne pouvez pas le faire dans le storyboard, ce n'est pas grave, vous le feriez dans le code au moment de la layout.)

Est-ce possible?

Cela provoque-t-il des problèmes (disons) quand l'un des VC disparaît?

(En fait la contrainte provoquerait-elle une reference difficile?)

Quel est le problème à ce sujet?

Oui, cela fonctionnera, tant que vos vues font partie de la même hiérarchie de vues. Peu importe qu'ils soient childViewControllers, tout fonctionne de la même manière qu'avec les sous-vues normales.

Vous pouvez uniquement append des contraintes aux vues déjà ajoutées à la même vue et vous obtiendrez une exception si vous tentez d'append des contraintes aux vues qui n'ont pas encore été ajoutées.

Si vous supprimez l'une des vues, les contraintes associées seront également supprimées.