この警告はXcode 6.1で発生します。誰もがこの警告が何を意味し、それで何が起こるか考えていますか?どうもありがとう!
以下は、ソースコードで開かれた警告のスクリーンショットです。」
警告を引き起こす制約を見つける方法は?Xcodeは、どの制約が問題であるかを通知しません。
この警告はXcode 6.1で発生します。誰もがこの警告が何を意味し、それで何が起こるか考えていますか?どうもありがとう!
以下は、ソースコードで開かれた警告のスクリーンショットです。」
警告を引き起こす制約を見つける方法は?Xcodeは、どの制約が問題であるかを通知しません。
回答:
この警告は煩わしい場合があり、Xcode 6.1.1以降で発生します。主な問題は、警告をクリックしても参照される制約を簡単に見つけることができないことです。これはバグであり、遅かれ早かれ修正されると思います。
ただし、当面は、この小さな回避策を使用できます。
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 ...
5/2016のXcodeの場合、面倒なことに、Xcodeを終了して再起動し、この警告をクリアする必要がある場合があります。
紛らわしいことに、同じエラーが無関係な問題(Appleのバグまたはエラー言語の不適切な使用のようです)によって引き起こされる可能性があることに注意してください。IBInspectable
アイテムがあり、Swiftファイルでそれらの名前を変更した場合。Xcodeは古い名前のUserDefinedRuntimeAttributesを削除しません。「Identity Inspector」(右パネルのアイテム3)をクリックして、不要なアイテムを削除するだけです。
このメッセージは、ストーリーボードのビューを非アクティブ化したが、そのビューに基づく制約を非アクティブ化しなかった場合にトリガーされます。
たとえば、ボタンを無効にしましたが、そのボタンにリンクされたいくつかの制約があります。これは、高さや幅などの固有の制約、または別のビューからの距離などの相対制約です。
ビューを参照する各制約をオフにする必要があり、手動でオフにする必要があります。Xcodeはここでは過度に保守的であり、あなたのためにそれをしません。
この解決策は私にとってはうまくいきます。
Xcode 5で開発したプロジェクトからいくつかの項目をXcode 6にコピーし、Xcode 6のストーリーボードは複数のレイアウトをサポートするため、すべての制約について、現在の構成にインストールする必要があります。
たとえば、次のように設定する必要がある制約に対して、「コンパクト幅|通常の高さ」を使用しています。
プロジェクトの何百もの制約をチェックして設定し、クリーンおよびビルドした後、警告は最終的に消えます。
Installed
ビューオブジェクトの属性には、厄介なチェックボックスもあることに注意してください。したがって、表示されていると思われるビューオブジェクトのチェックボックスがオンになっていることを確認してください。警告は、一部のオブジェクトがに表示されていないことを示していcurrent configuration
ます。
このエラーがどのようにして発生したかを自分のケースに追加したかっただけです。私のケースでは、「Cmd + Backspace」を含むテキストフィールドを削除したいと思いました。これは、シーンビルダーのツリービューで直接行いました。
スヌーズフィールドがグレー表示されていることがわかります。
それで、それは私にとって簡単に発見されました。以下を選択するだけで、フィールドを実際に削除することができます。
メニューから編集-削除
驚くべきことに、これは本当にフィールド(制約を含む)を削除します。多分これは誰かがこの迷惑な警告の原因を簡単に見つけるのに役立ちます...
詳細な説明
他の答えに問題はありません。私は、元の警告の文言に注意を引き、これがワークフローに現れる可能性のあるいくつかのユースケースを特定したかっただけです。
現在の構成で制約参照アイテムがオフになっています。
1つまたは複数の制約で参照されている一部のアイテム(通常は通常表示されるコントロールまたはカスタムビュー)がオフになっている(無効になっているか、チェックボックスが[インストールされている]チェックボックスがオフになっている)。たとえば、ストーリーボードのコントロールまたはビューをメインビューの外に移動したい場合(または、サイズクラスで何か面白いことをしているときに表示される場合があります)、コントロールに制約が関連付けられていると、この警告が表示される場合があります。
推奨されるソリューションに加えて:
現在の構成でこの制約をオフにします。
修正する2つのアプローチ
ドキュメントの概要
視覚的にストーリーボードでドキュメントアウトラインを開き、メインビューの外にあるコントロール/ビューを参照するグレー表示された制約を探すことができます(アウトラインを広げ、制約をクリックして、属性インスペクターを表示し、マウスを押してすばやく確認します)。 。次に、このコンテキスト(サイズクラス)から制約を削除します。たとえば、私の場合、後でどこに表示するかを決定するまでコントロールを保持しているだけなので、問題のある制約を後で完全に削除することにしました。ただし、サイズクラスでは、属性インスペクターにインストールされているチェックボックスを使用して、現在のコンテキストから制約をアンインストールします。
ログナビゲーター/検索ツール
ログナビゲーターを引き続き使用して、ストーリーボード上の各オブジェクトに与えられた一意の識別子を介して問題のコントロールを見つけることもできます。ログでは、黄色で強調表示されたテキストの直前にあり、通常は上記の例にあるような形式になります。jvj-mY-DHf
識別子を使用すると、Xcodeの検索ツールを使用して、問題のある制約を見つけて削除(完全に)またはアンインストール(現在のコンテキストの場合)できます。
Xmlとその単純さが好きな場合は、ストーリーボードをソースコードとして開き、問題のある一意の識別子を見つけて、xmlの適切なブロックを削除することもできます。
私のために働いた(そして私はなぜ私には理由がわかりません)は、 "Use Trait Variations"をオフにし、次にクリーンアップを実行し、そしてそれらを再びオンにすることです。次のビルドには警告はありませんでした。
[特性のバリエーションを使用]をオフにするには、プロジェクトナビゲーターでストーリーボードを選択し、[ファイルインスペクター]を選択します。
次に、「特性バリエーションを使用」の選択を解除し、Shift-CMD Kを押してクリーンアップを実行します。使用する場合は、特性バリエーションをオンに戻します。
@BadCatの回答で説明され、よくガイドされているように、私はステップをたどり、あえて1つだけステップを踏みました。
BadCats回答の最後のステップの後に実行するステップ:
ステップ1:
Interface Builderで制約を選択し、それが何であるかを念頭に置いて削除しました。
ステップ2
XCodeプロジェクトをビルドすると、警告の数が増える可能性があることが示されます。これは、適切にコンパイルするために必要な制約を削除したためです。それでは、3番目のステップに進みます。
ステップ3
念頭に置いた制約(削除した制約)を再度追加します。そして、それを再構築します!
私にとって、これを行うだけで警告は消えました!これは一部の人にとってうまくいくと思います!
原因:
この警告の原因となった問題を理解できたため、ラベルをIBOutletに接続しましたが、その名前は大文字で始まりました。そこで、ViewControllerで単純な文字に名前を変更し、IBで変更するようになりました。過去のIBOutletを削除して、新しく名前を変更したプロパティ名に接続して接続しました。その後、新しい警告が出てくることに気づきました。
最初に私はこのスレッドでも次の答えを試しましたが、役に立ちませんでした!
乾杯!
私の場合はラベルを選択し、コントロール+ Xをクリックします。無効になりますが、私は何もしません。ビルドすると警告が表示されます。解決策:ラベルを削除するか、選択したコントロール+ラベルのXを削除します。
スタックビューで問題が発生しました。制約を削除して再度追加しても効果はありませんでした。クリーニングと再構築は助けにはなりませんでした。
私にとっての解決策は、完全に新しいスタックビューオブジェクトを作成することでした。
次に、すべての要素を古いスタックビューから新しいスタックビューに移動します。
古いスタックビューを削除すると、問題が修正されました。