作成したカスタムコントロールがいくつかあり、新しいプロジェクトで使用しています。ただし、インターフェイスビルダーでエラーが発生し続けます。
Failed to update auto layout status: Failed to load designables from path (null)
または
Failed to render instance of <control>: Failed to load designables from path (null)
別のプロジェクトでコントロールをテストしましたが、インターフェイスビルダーで正しく表示されるようですが、現在のプロジェクトでそれらを動作させることはできません。このエラーの原因と修正方法を教えてください。
前もって感謝します...
同じ問題がありました。ココアポッドを使用していますが、デザイン可能なものを使用するポッドがあります。したがって、トリックは「use_frameworks!」を追加することでしたPodfileに。 「ポッドアップデート」を実行して、Xcodeプロジェクトを再度開きます。エラーメッセージは表示されません。
編集**
Xcodeを開き(ただし、プロジェクトを開かないで)、ウィンドウ(右から2番目)をクリックします
[オーガナイザー]をクリックし、プロジェクトにいることを確認してから、派生データをすべて削除します。 Xcodeを閉じてからプロジェクトを再度開き、Xcodeでファイルのインデックスを再作成し、問題が解決するかどうかを確認します
私はXcode 7.3を実行していますが、最終的にこれらのステップに従う前の状態にプロジェクトを残したまま、これらのステップに従うことでエラーが魔法のように消えます(つまり、ネットゼロの変更)
特に他の何かを急いでいるときは、これまでに見たことがあるようなXcodeのたまもののように見えます。
カスタムIBDesignable
ビューを持つ非CocoaPodsプロジェクトでも同じ問題がありました。どうやら、それはXcodeのバグです。 この回答 のステップは、問題の解決に役立ちました。要するに:
Interface Builder Cocoa Touch Tool
という名前のすべてのプロセスを強制終了します。Cocoapodsの最新バージョンで修正されたこの問題
インストールするには、単に実行します:
[Sudo] gem install cocoapods --pre
エラーを修正するために:「パスから設計可能ファイルをロードできませんでした(null)」:
use_frameworks!
pod '****'
end
use_frameworks!
をPodfileに追加します
問題は、インターフェイスビルダーがビューをレンダリングするときに、cocoapodsのIB_DESIGNABLEが正しくリンクされないことでした。
use_frameworks!
トリックはそれを行う必要がありますが、私にとっては、コードを移行するのは少し大変でした。
私のコツはIB_DESIGNABLEごとにサブクラス化ポッドから直接来たストーリーボードで使用したビューです。エラーを解決しました。
私はそれを再現できないため、これがあなたの問題を解決するかどうかはわかりません。しかし、とにかく試してみるといいと思いました。
最初に、他の人が述べたように、CocoaPodsにも同じ問題があったようです。私はそれらの修正を構成するコミットを行ったが、あなたの設定に関連する結果はなかった。
ただし、この StackOverflow question で別の関連エラーメッセージが見つかりました。これは、パス上のIBで見つからないものにも関連していました。彼らの解決策があなたに役立つかどうか疑問に思いました:
解決策は、ターゲットの_Build settings
_ _Runpath Search Paths
_フィールドに$(CONFIGURATION_BUILD_DIR)
を追加することでした。
ライブレンダリングをデバッグするには、非常に便利なトリックがあります。
1)この拡張機能をプロジェクトに追加します。
_ extension UIView {
public func liveDebugLog(message: String) {
#if !(TARGET_OS_IPHONE)
let logPath = "/tmp/XcodeLiveRendering.log"
if !NSFileManager.defaultManager().fileExistsAtPath(logPath) {
NSFileManager.defaultManager().createFileAtPath(logPath, contents: NSData(), attributes: nil)
}
var fileHandle = NSFileHandle(forWritingAtPath: logPath)
fileHandle.seekToEndOfFile()
let date = NSDate()
let bundle = NSBundle(forClass: self.dynamicType)
let application: AnyObject = bundle.objectForInfoDictionaryKey("CFBundleName")
let data = "\(date) \(application) \(message)\n".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
fileHandle.writeData(data)
#endif
}
}
_
2)liveDebugLog(message:)
を追加し、知りたいものを何でも入れます。 3)_Terminal.app
_を開き、コマンド_open /tmp/XcodeLiveRendering.log
_を実行します
できた!
MortenBøgh のクレジット
私はポッドを更新することでその問題を解決しました
CocoaPodsは使用していませんが、IBDesignableアイテムを含む社内フレームワークを使用しており、この問題も発生していました。メインプロジェクトから派生データを削除して削除し、Xcodeを再起動しましたが、修正されなかったようです。それを解決するには、[ウィンドウ]> [プロジェクト]に移動し、フレームワークプロジェクト(フレームワークを使用したプロジェクトではなく、フレームワークプロジェクト自体)を選択し、派生データを削除する必要がありました。したがって、完全な手順:
IBDesignablesがあり、エラーの原因となっている可能性があるすべてのフレームワークプロジェクトについて、手順3を繰り返します。
ココアポッドを使用していませんでしたが、インポートされたクラスを拡張するView Controllerでこのエラーが発生しました。 StoryBoardをIphoneXビューに変更するときにのみこのエラーが発生し、iPhone 8ビューでは正常に機能していました。
プロジェクトの設定を[新しいビルドシステム(プレビュー)]から[標準ビルドシステム]に変更し、プロジェクトをクリーンアップするとエラーが消えました。
理由はわかりませんが、それで問題は解決しました。
このエラーは、Xcodeとプロジェクトが開いているときにポッドを更新したときに表示されました。
Xcodeをシャットダウンします。ポッドの更新を再度実行しました。 xcodeを再起動しました。
エラーは再び表示されませんでした。