Ich füge ein UILabel
(MengeLabel) in UIViewController
im Storyboard-Editor hinzu. Und dann, in der schnellen Datei viewDidLoad
, erstelle ich programmatisch ein UITextField
(paymentTextField) und versuche eine Einschränkung zwischen amountLabel
und paymentTextField
hinzuzufügen. Hier ist mein Code in viewDidload
:
Aber ich bekomme einen Fehler:
"Beenden der App aufgrund der nicht abgefangenen Ausnahme" NSGenericException ", Grund: 'Constraint kann mit Elementen & gt; nicht aktiviert werden. und & gt; weil sie keinen gemeinsamen Vorfahren haben. Verweist die Einschränkung auf Elemente in verschiedenen Ansichtshierarchien? Das ist illegal. "
Weiß jemand, was falsch ist? amountLabel
wird direkt in die Ansicht im Storyboard gezogen und "paymentTextField" wird programmatisch zur selben Ansicht hinzugefügt. Warum haben sie keinen gemeinsamen Vorfahren?
Ich stieß auf das gleiche Problem, das Sie zuvor beschrieben haben. Um die programmatische Unteransicht (in Ihrem Fall das paymentTextField) zu erstellen, müssen Sie diese zuerst zur Unteransicht hinzufügen und dann Ihre Einschränkungen anwenden.
Wenn Sie zuerst die Unteransicht zur Ansicht hinzufügen, stellen Sie sicher, dass beide Ansichten dasselbe übergeordnete Element haben.
Sehr spät, aber hoffe, das hilft anderen.
Checkliste für dieses Problem:
Der Fehler besagt, dass "weil sie keinen gemeinsamen Vorfahren haben", was bedeutet, dass sie nicht denselben Elternteil teilen. Um Abhängigkeiten zwischen zwei Elementen in Beziehung zu setzen, müssen sie eine Kind-Eltern-Beziehung oder eine Geschwisterbeziehung haben.
Stellen Sie in Ihrem Fall sicher, dass sie die gleiche übergeordnete Ansicht haben, bevor Sie die Einschränkung programmgesteuert hinzufügen.