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 "
Wie finde ich heraus, welche Einschränkung die Warnung verursacht? Xcode sagt Ihnen nicht, welche Einschränkung das Problem ist.
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:
Reveal in Log
????... 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 ...
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.
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.
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:
Nachdem ich alle Hunderte von Einschränkungen in meinen Projekten, Clean und Build, überprüft und festgelegt habe, verschwinden die Warnungen schließlich.
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:
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.
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.
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 .
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).
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.
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).
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.
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".
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.
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.
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:
Im schlimmsten Fall löschen Sie alle Outlets und schließen sie einfach wieder an. Fall gelöst!
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!
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.
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.