it-swarm.com.de

Warnung beim Xcode-Storyboard: In der aktuellen Konfiguration sind die Elemente, auf die Bezug genommen wird, in Bezug auf Einschränkungen eingeschränkt. Deaktivieren Sie diese Einschränkung in der aktuellen Konfiguration

Diese Warnung tritt in Xcode 6.1 auf. Hat jemand eine Idee, was diese Warnung bedeutet und was damit passiert? Danke vielmals!

Unten ist ein Screenshot mit den Warnungen im Quellcode "

enter image description here

Wie finde ich heraus, welche Einschränkung die Warnung verursacht? Xcode sagt Ihnen nicht, welche Einschränkung das Problem ist.

 enter image description here

138
Zhihao Yang

Diese Warnung kann ärgerlich sein und tritt ab Xcode 6.1.1 auf. Das Hauptproblem ist, dass Sie die referenzierte Einschränkung nicht leicht finden können, indem Sie auf die Warnung klicken. Ich denke, das ist ein Fehler und wird früher oder später behoben.

In der Zwischenzeit können Sie jedoch diese kleine Problemumgehung verwenden:

Schritt 1: Ärgerliche Warnung erkennen ????

Annoying warning

Schritt 2: Rechts/Strg-Klick auf Warnung, wählen Sie Reveal in Log ????

enter image description here

Schritt 3: Bewundern Sie die Schönheit des folgenden Protokollausschnitts:

... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...

Hmmm ... was ist das ...?

interesting

Schritt 4: Lassen Sie uns das in die Suchleiste des Projekts werfen ... ????

search

???? Ja, du hast richtig geraten. Klick es.

Schritt 5: ???? OH MEIN GOTT! Genießen Sie ein paar Minuten mehr Produktivität, bis Apple diesen nervigen Fehler behebt. ????

wheeee


Für 2016 ...

  • Wenn Sie es nicht mit "In Protokoll anzeigen" erhalten können, zeigen Sie den Berichtsnavigator an. (Dies ist der Tab ganz rechts in der linken Spalte.) Hier können Sie die Build-Ergebnisse analysieren. Daraufhin wird das Erstellungsprotokoll einschließlich der Einschränkungs-ID angezeigt. Höflichkeit buildsucceeded

 enter image description here

 enter image description here

  • Beachten Sie, dass Sie für Xcode 5/2016 ärgerlich das Beenden und restart Xcode beenden müssen, um diese Warnung in einigen Fällen zu löschen.

  • Beachten Sie, dass derselbe Fehler verwirrend durch ein nicht verwandtes Problem verursacht werden kann (dies scheint ein Apple-Fehler oder eine schlechte Verwendung der Fehlersprache zu sein): Wenn Sie IBInspectable-Elemente haben und diese in Ihren Swift-Dateien mit umbenennen. Xcode löscht nicht die alten UserDefinedRuntimeAttributes für Sie. Klicken Sie einfach auf "Identity Inspector" (Element 3 im rechten Bereich) und löschen Sie die Dud-Elemente.

Für 2017 ...

  • Eine weitere häufige und in der Tat einfachere Ursache des Problems. Wenn Sie zufällig un-Install eines Elements gefunden haben: Xcode weiß zum Schreiben nicht, dass automatisch alle Einschränkungen deinstalliert werden, die zu diesem Element führen. Sehen Sie sich einfach alle nicht installierten Elemente an, und markieren Sie sie für alle Einschränkungen einfach als nicht installiert. (Oder löschen Sie einfach das nicht installierte Element vorübergehend ganz, um zu sehen, ob dies das Problem ist.)
420
BastiBen

Diese Nachricht wird ausgelöst, wenn Sie eine Ansicht in Ihrem Storyboard deaktiviert haben, die auf dieser Ansicht basierenden Einschränkungen jedoch nicht deaktiviert haben. 

Sie haben beispielsweise eine Schaltfläche deaktiviert, aber Sie haben noch einige Einschränkungen, die mit dieser Schaltfläche verknüpft sind. Dies kann eine intrinsische Einschränkung wie Höhe oder Breite sein oder eine relative Einschränkung wie der Abstand von einer anderen Ansicht. 

Sie müssen jede Einschränkung deaktivieren, die auf die Ansicht verweist, und Sie müssen dies manuell tun. Xcode ist hier zu konservativ und wird es nicht für Sie tun. 

37
KPM

Diese Lösung funktioniert für mich.

Da ich mehrere Elemente aus dem Projekt, das ich in Xcode 5 entwickelt habe, in Xcode 6 kopiert habe und das Storyboard in Xcode 6 mehrere Layouts unterstützt, muss es für jede Einschränkung in der aktuellen Konfiguration installiert werden.

Zum Beispiel verwende ich "Kompakte Breite | Regelmäßige Höhe". Für die Einschränkung muss ich wie folgt einstellen:

enter image description here

Nachdem ich alle Hunderte von Einschränkungen in meinen Projekten, Clean und Build, überprüft und festgelegt habe, verschwinden die Warnungen schließlich.

14
Zhihao Yang

Ich wollte nur meinen Fall hinzufügen, wie dieser Fehler für mich geschah: In meinem Fall wollte ich ein Textfeld mit "Cmd + Backspace" löschen. Ich habe dies direkt im Scene-Builder Tree-View gemacht:

 enter image description here

Sie können sehen, dass das Schlummerfeld ausgegraut ist.

Das war also für mich leicht zu entdecken. Sie können das Feld einfach löschen, indem Sie Folgendes auswählen:

Bearbeiten-Löschen aus dem Menü

Überraschenderweise - dies löscht das Feld (einschließlich der Einschränkungen) wirklich ... Vielleicht hilft es jemandem, die Ursache für diese ärgerliche Warnung zu finden. 

8
Dirk

Erweiterte Erklärung

Nichts falsch mit den anderen Antworten. Ich wollte nur auf die Formulierung in der ursprünglichen Warnung aufmerksam machen und ein paar Anwendungsfälle identifizieren, bei denen dies im Arbeitsablauf auftauchen kann.

constraint-warning

In der aktuellen Konfiguration wurde die Einschränkungsreferenzelemente deaktiviert.

Das bedeutet, dass ein Element (normalerweise ein Steuerelement oder eine benutzerdefinierte Ansicht, das normalerweise sichtbar ist), auf das in einer oder mehreren Einschränkungen verwiesen wird, deaktiviert ist (deaktiviert ist oder das Kontrollkästchen "installiert" deaktiviert ist). Wenn Sie beispielsweise entscheiden, dass Sie ein Steuerelement oder eine Ansicht in Ihrem Storyboard außerhalb der Hauptansicht verschieben möchten (oder manchmal etwas sehen, wenn Sie in Größenklassen etwas Interessantes tun), wird diese Warnung möglicherweise angezeigt, wenn mit dem Steuerelement Einschränkungen verbunden sind . 

uninstalled-control

Neben der empfohlenen Lösung:

Deaktivieren Sie diese Einschränkung in der aktuellen Konfiguration.

Zwei Ansätze zur Behebung

Dokumentübersicht

Visuell können Sie die Dokumentgliederung in Ihrem Storyboard öffnen und nach abgeblendeten Abhängigkeiten suchen, die auf Ihr Steuerelement/Ihre Ansicht außerhalb der Hauptansicht verweisen (erweitern Sie die Gliederung, klicken Sie auf die Einschränkung, und zeigen Sie den Attributinspektor an. . Entfernen Sie dann die Einschränkung aus diesem Kontext (Größenklasse). In meinem Fall halte ich zum Beispiel nur die Kontrolle, bis ich mich später dazu entscheide, wo ich sie präsentieren möchte. Daher habe ich mich dazu entschlossen, die anstößige Einschränkung bis zu einem späteren Zeitpunkt vollständig zu löschen. In einer Größenklasse würde ich jedoch die Einschränkung mit dem installierten Kontrollkästchen im Attribut-Inspector aus dem aktuellen Kontext deinstallieren.

Log Navigator/Suchwerkzeug

Sie können den Log Navigator auch weiterhin verwenden, um die Problemsteuerung über die eindeutige Kennung zu finden, die jedem Objekt im Storyboard zugewiesen wurde. Im Protokoll wäre es kurz vor dem gelb hervorgehobenen Text und nimmt normalerweise die Form wie in meinem obigen Beispiel an: jvj-mY-DHf

Mit Hilfe des Bezeichners kann das Suchwerkzeug in Xcode verwendet werden, um die anstößige Einschränkung zu finden und zu löschen (vollständig) oder zu deinstallieren (für den aktuellen Kontext).

log-navigator

Wenn Sie Xml und seine Einfachheit lieben, können Sie das Storyboard auch einfach als Quellcode öffnen, den eindeutigen eindeutigen Bezeichner finden und den entsprechenden XML-Block löschen.

6
Tommie C.

Für mich geschieht dies, wenn ich für ein Objekt eine neue Einschränkung für das Objekt (nicht Ansicht) mit der Option "Beschränkung auf Ränder" nicht aktiviert habe. Problem gelöst mit Häkchen bei der Option (Standardeinstellung).

1
Ryde

Dies kann beispielsweise der Fall sein, weil Sie eine Größenklasse ausgewählt haben, die nicht mit Ihren Einschränkungen kompatibel ist (wAny hAny ist ein häufiger Fall). Wählen Sie in diesem Fall einfach eine andere Größenklasse im Interface Builder aus, und Sie sind fertig.

1
Jano

Was für mich funktionierte (und ich habe keine Ahnung, warum) ist, "Use Trait Variations" auszuschalten, dann eine Bereinigung durchzuführen und sie dann wieder einzuschalten. Der nächste Build hatte keine Warnungen.

Zum Deaktivieren der Option "Variationen verwenden" wählen Sie einfach Ihr Storyboard im Projektnavigator aus und wählen dann "Datei-Inspektor".

 enter image description here

Heben Sie dann die Auswahl von "Eigenschaftsvariationen verwenden" auf, führen Sie eine Bereinigung durch Drücken von Umschalttaste-CMD K aus und aktivieren Sie die Merkmalvarianten wieder, wenn Sie sie verwenden möchten.

 enter image description here

1
Scooter

Mein Fall ist "select label", dann klicken Sie auf Control + X, es wird deaktiviert, aber ich mache nichts damit. Wenn ich baue, wird eine Warnung angezeigt. Lösung: Etikett entfernen oder ausgewähltes Steuerelement + X für Etikett entfernen.

0
Duyen Hang Kim

Ich dachte, dass es eine anhaltende Einschränkung aufgrund der anderen Antwort war, jedoch aufgrund eines "Absatzes", den ich noch für einen Artikel hatte, den ich zuvor gelöscht hatte. Was ist zu tun ist:

  1. Wählen Sie Ihren ViewController aus
  2. Klicken Sie oben rechts auf das Auslass-Symbol
  3. Durchsuchen Sie Ihre Verkaufsstellen und löschen Sie sorgfältig alle, die Sie nicht benötigen

Im schlimmsten Fall löschen Sie alle Outlets und schließen sie einfach wieder an. Fall gelöst!

0
Chuckles

Wie erwähnt und gut geführt in @ BadCats Antwort , Ich folgte den Schritten und nur noch einen Schritt, den ich gewagt habe!

Schritte, die nach dem letzten Schritt der BadCats-Antwort zu tragen sind:

Schritt 1:

Ich habe die Einschränkung im Interface Builder ausgewählt und dann darauf geachtet, worum es sich handelt, und dann gelöscht.

Schritt 2

Erstellen Sie das XCode-Projekt und es wird angezeigt, dass möglicherweise die Anzahl der Warnungen erhöht wird. Das liegt daran, dass Sie eine Einschränkung gelöscht haben, die es gut kompilieren muss. Also weiter zum 3. Schritt!

Schritt 3

Fügen Sie die Einschränkung, die Sie in Erinnerung hatten (die von Ihnen gelöschte), erneut hinzu ... und bauen Sie sie dann erneut auf!

Für mich sind die Warnungen einfach weggegangen! ... Ich denke, das wird für einige Leute klappen!

Ursache:

Da ich das Problem, das zu dieser Warnung führte, verstehen konnte, hatte ich ein Label, das mit einem IBOutlet verbunden war, aber sein Name begann mit einem Großbuchstaben. Also habe ich es mit einem einfachen Buchstaben im ViewController umbenannt und kam dazu, es im IB zu ändern. Ich entfernte mich an IBOutlet und stellte es mit dem neu umbenannten Eigenschaftennamen in Verbindung. Dann bemerkte ich, dass eine neue Warnung auftaucht.

Zuerst habe ich in diesem Thread folgendes answer ausprobiert, aber es hat nicht geholfen!

Prost!

0
Randika Vishman

Ich hatte das Problem auf einer Stapelansicht. Das Löschen der Einschränkungen und das erneute Hinzufügen half nicht. Reinigung und Umbau haben nicht geholfen. 

Für mich bestand die Lösung darin, ein völlig neues Stack-View-Objekt zu erstellen.

Verschieben Sie dann alle Elemente aus der alten Stapelansicht in die neue Stapelansicht.

Das Löschen der alten Stapelansicht hat das Problem behoben.

0

Ich lösche alle diese Elemente der Benutzeroberfläche einschließlich ihrer Einschränkungen und füge sie alle wieder hinzu. Dies ist auf jeden Fall eine sehr schlechte, aber nützliche Lösung.

0
Old one