Diese Warnung tritt in Xcode 6.1 auf. Hat jemand Ideen, was diese Warnung bedeutet und was damit passieren wird? Danke vielmals!
Unten sehen Sie einen Screenshot mit den im Quellcode geöffneten Warnungen. "
Wie finde ich heraus, welche Einschränkung die Warnung verursacht? Xcode sagt Ihnen nicht, welche Einschränkung das Problem ist.
ios
xcode
cocoa-touch
storyboard
xcode6
Zhihao Yang
quelle
quelle
Antworten:
Diese Warnung kann ärgerlich sein und tritt ab Xcode 6.1.1 auf. Das Hauptproblem besteht darin, dass Sie die referenzierte Einschränkung nicht einfach 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: Störende Warnung erkennen 😱
Schritt 2: Rechts- / Strg-Klick auf Warnung, wählen Sie
Reveal in Log
😨Schritt 3: Bewundern Sie die Schönheit des folgenden Protokollausschnitts:
Hmmm ... Was ist das ...?
Schritt 4: Lassen Sie uns das in die Projektsuchleiste werfen ... 😐
😮 Ja, du hast richtig geraten. Klick es.
Schritt 5: 😁 OMG! Genießen Sie ein paar Minuten mehr Produktivität, bis Apple diesen lästigen Fehler behoben hat. 😎
Für 2016 ...
Beachten Sie, dass Sie für Xcode von 5/2016 ärgerlicherweise Xcode beenden und neu starten müssen , um diese Warnung in einigen Fällen zu löschen.
Beachten Sie, dass derselbe Fehler verwirrenderweise 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 zufällig in Ihren Swift-Dateien umbenennen . Xcode ist nicht löschen Sie die alten Namen UserDefinedRuntimeAttributes für Sie. Klicken Sie einfach auf "Identity Inspector" (Punkt 3 im rechten Bereich) und löschen Sie die Blindgänger.Für 2017 ...
quelle
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 mit dieser Schaltfläche sind noch einige Einschränkungen verknüpft. Dies kann eine intrinsische Einschränkung wie Höhe oder Breite oder eine relative Einschränkung wie der Abstand zu einer anderen Ansicht sein.
Sie müssen alle Einschränkungen, die auf die Ansicht verweisen, deaktivieren und manuell ausführen. Xcode ist hier überkonservativ und wird es nicht für Sie tun.
quelle
Diese Lösung funktioniert bei mir.
Da ich mehrere Elemente aus dem in Xcode 5 entwickelten Projekt in Xcode 6 kopiert habe und das Storyboard in Xcode 6 mehrere Layouts unterstützt, muss ich es für jede Einschränkung in der aktuellen Konfiguration installieren.
Zum Beispiel verwende ich "Kompakte Breite | Normale Höhe" für die Einschränkung, die ich wie folgt festlegen muss:
Nachdem ich alle Hunderte von Einschränkungen in meinen Projekten überprüft und festgelegt, bereinigt und erstellt habe, verschwinden die Warnungen endgültig.
quelle
Installed
Ihre Ansichtsobjektattribute auch diese lästigen Kontrollkästchen enthalten. Stellen Sie daher sicher, dass für die Ansichtsobjekte, von denen Sie glauben, dass sie angezeigt werden, das richtige Kontrollkästchen aktiviert ist. Die Warnung weist Sie darauf hin, dass einige Objekte nicht in der angezeigt werdencurrent configuration
.Ich wollte nur meinen Fall hinzufügen, wie dieser Fehler bei mir aufgetreten ist: In meinem Fall wollte ich ein Textfeld mit "Cmd + Rücktaste" löschen. Ich habe dies direkt in der Scene-Builder-Baumansicht gemacht:
Sie können sehen, dass das Schlummerfeld ausgegraut ist.
Das war für mich also leicht zu entdecken. Sie können das Feld dann einfach löschen, indem Sie Folgendes auswählen:
Bearbeiten-Löschen aus dem Menü
Überraschenderweise wird dadurch das Feld (einschließlich der Einschränkungen) wirklich gelöscht. Vielleicht hilft dies jemandem, die Ursache dieser nervigen Warnung leicht zu finden ...
quelle
Erweiterte Erklärung
An den anderen Antworten ist nichts auszusetzen. Ich wollte nur auf den Wortlaut in der ursprünglichen Warnung aufmerksam machen und einige Anwendungsfälle identifizieren, in denen dies im eigenen Workflow auftreten kann.
Dies 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 oder das Kontrollkästchen "installiert" deaktiviert). Wenn Sie beispielsweise entscheiden, dass Sie ein Steuerelement oder eine Ansicht in Ihrem Storyboard außerhalb der Hauptansicht verschieben möchten (oder manchmal, wenn Sie in Größenklassen etwas Interessantes tun), wird diese Warnung möglicherweise angezeigt, wenn dem Steuerelement Einschränkungen zugeordnet sind .
Zusammen mit der empfohlenen Lösung:
Zwei Lösungsansätze
Dokumentübersicht
Visuell können Sie die Dokumentkontur in Ihrem Storyboard öffnen und nach abgeblendeten Einschränkungen suchen, die auf Ihr Steuerelement / Ihre Ansicht außerhalb der Hauptansicht verweisen (erweitern Sie die Kontur, klicken Sie auf die Einschränkung und zeigen Sie den Attributinspektor an, und klicken Sie mit der Maus nach unten, um sie schnell zu überprüfen). . Entfernen Sie dann die Einschränkung aus diesem Kontext (Größenklasse). In meinem Fall halte ich beispielsweise das Steuerelement nur, bis ich später entscheide, wo es präsentiert werden soll, und habe mich daher entschlossen, die betreffende Einschränkung bis später vollständig zu löschen. In einer Größenklasse würde ich die Einschränkung jedoch einfach über das installierte Kontrollkästchen im Attributinspektor aus dem aktuellen Kontext deinstallieren.
Log Navigator / Find Tool
Sie können den Protokollnavigator auch weiterhin verwenden, um die Problemsteuerung über die eindeutige Kennung zu finden, die jedem Objekt im Storyboard zugewiesen wurde. Im Protokoll befindet es sich kurz vor dem gelb hervorgehobenen Text und hat normalerweise die in meinem obigen Beispiel gezeigte Form: jvj-mY-DHf
Mit dem Bezeichner kann man dann das Suchwerkzeug in Xcode verwenden, um die betreffende Einschränkung zu suchen und (vollständig) zu löschen oder (für den aktuellen Kontext) zu deinstallieren.
Wenn Sie Xml und seine Einfachheit mögen, können Sie das Storyboard auch einfach als Quellcode öffnen, die fehlerhafte eindeutige Kennung suchen und den entsprechenden XML-Block löschen.
quelle
Einer der Gründe, warum dies passieren kann, ist, dass Sie eine Größenklasse ausgewählt haben, die nicht mit Ihren Einschränkungen kompatibel
wAny hAny
ist (dies ist ein häufiger Fall). Wählen Sie in diesem Fall einfach eine andere Größenklasse in Interface Builder aus und Sie sind fertig.quelle
Für mich passiert es, wenn ich einem Objekt eine neue Einschränkung für ein Objekt (keine Ansicht) setze, wobei die Option "Auf Ränder beschränken" nicht aktiviert ist. Problem gelöst mit Häkchen bei der Option (Standardeinstellung).
quelle
Was für mich funktioniert hat (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.
Um "Trait Variations verwenden" zu deaktivieren, wählen Sie einfach Ihr Storyboard im Projektnavigator aus und wählen Sie dann Dateiinspektor.
Deaktivieren Sie dann einfach "Use Trait Variations", führen Sie die Reinigung durch Drücken von Shift-CMD K durch und schalten Sie die Trait Variationen wieder ein, wenn Sie sie verwenden möchten.
quelle
Ich dachte, es sei aufgrund der anderen Antwort eine anhaltende Einschränkung, aber es lag an einem "Outlet", das ich noch für einen Artikel hatte, den ich zuvor gelöscht hatte. Was zu tun ist:
Im schlimmsten Fall löschen Sie alle Ihre Steckdosen und schließen sie einfach wieder an. Fall gelöst!
quelle
Wie in der Antwort von @ BadCat erwähnt und gut geführt , folgte ich den Schritten und nur noch einem Schritt, den ich zu wagen wagte!
Schritte nach dem letzten Schritt von BadCats Antwort zu tragen:
Schritt 1:
Ich habe die Einschränkung im Interface Builder ausgewählt und dann berücksichtigt, wofür sie gedacht ist, und sie dann gelöscht.
Schritt 2
Erstellen Sie das XCode-Projekt und es wird angezeigt, dass möglicherweise die Anzahl der Warnungen erhöht wurde. Das liegt daran, dass Sie eine Einschränkung gelöscht haben, die gut kompiliert werden muss. Fahren Sie also mit dem 3. Schritt fort!
Schritt 3
Fügen Sie die Einschränkung, die Sie beachtet haben (die Sie gelöscht haben), erneut hinzu. Und dann wieder aufbauen!
Für mich gingen die Warnungen einfach dadurch weg! Ich denke, das wird für einige Leute klappen!
Ursache:
Da ich das Problem verstehen konnte, das zu dieser Warnung führte, hatte ich ein Label mit einem IBOutlet verbunden, aber sein Name begann mit einem Großbuchstaben. Also habe ich es mit einem einfachen Buchstaben im ViewController umbenannt und bin gekommen, um es im IB zu ändern. Ich entfernte mich an IBOutlet vorbei und verband es mit dem neu umbenannten Eigenschaftsnamen und verband es. Dann bemerkte ich, dass eine neue Warnung auftaucht.
Zuerst habe ich auch die folgende Antwort in diesem Thread versucht , aber es hat nicht geholfen!
Prost!
quelle
Mein Fall ist, Beschriftung zu wählen und dann auf Strg + X zu klicken. Es wird deaktiviert, aber ich mache nichts damit. Wenn ich baue, wird eine Warnung angezeigt. Lösung: Entfernen Sie das Etikett oder entfernen Sie das ausgewählte Steuerelement + X für das Etikett.
quelle
Ich lösche alle diese UI-Elemente einschließlich ihrer Einschränkungen und füge sie alle wieder hinzu. Diese Warnungen verschwinden einfach. Auf jeden Fall ist dies ein schlechter, aber nützlicher Weg, um dies zu lösen.
quelle
Ich hatte das Problem in einer Stapelansicht. Das Löschen und erneute Hinzufügen der Einschränkungen hat nicht geholfen. Reinigung und Wiederaufbau haben nicht geholfen.
Für mich bestand die Lösung darin, ein völlig neues Stapelansichtsobjekt 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.
quelle