tmp
Wednesday, September 9, 2015
IB Designables: Failed to update
storyboardを表示すると以下のエラーが出るように(Xcode 6.4) ただbuild自体はSuccessとなっている IB上で見ると Custom Class の Designables は Error ``` file:///xxx.storyboard: error: IB Designables: Failed to update auto layout status: dlopen(yyy.xctest, 1): Library not loaded: @rpath/XCTest.framework/XCTest Referenced from: yyy.xctest Reason: image not found file:///xxx.storyboard: error: IB Designables: Failed to render instance of HogeButton: dlopen(yyy.xctest, 1): Library not loaded: @rpath/XCTest.framework/XCTest Referenced from: yyy.xctest Reason: image not found ``` Testがどうのこうのと言われているのでTest Targetから該当の@IBDesignableであるcustom classを取り除く エラーがちょっと変わる IB上で見ると Custom Class の Designables は Crashed ``` file:///xxx.storyboard: error: IB Designables: Failed to update auto layout status: Interface Builder Cocoa Touch Tool crashed file:///xxx.storyboard: error: IB Designables: Failed to render instance of HogeButton: The designables agent crashed ``` さらにcleanやらrestartやらしてみる ``` file:///xxx.storyboard: error: IB Designables: Failed to update auto layout status: Interface Builder Cocoa Touch Tool crashed file:///xxx.storyboard: error: IB Designables: Failed to render instance of HogeButton: Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance. ``` ググるとcustom classに`init(frame: CGRect)`が必要ということなので入れてみると解決 ##追記 上記方法だとUnit Testで間接的に Custom View を利用している場合(Model, ViewController とかが内包してる場合)だと、根本的な解決にはならない。 Xcode7 だと `@testable` のおかげでうまく解決したので以下解決法。 * Custom View(`@IBDesignable` を指定してる class) に `init(frame: CGRect)` がなければ実装しておく (`UITextView` だと `init(frame: CGRect, textContainer: NSTextContainer?)`) * Test target の Compile Sources から Test 以外すべて取り除く(メイン target から持ってきてる系のもの) * Test の import 部分にひたすら `@testable import XXX` をつけていく(XXXはメイン target の Product Name) * clean やら restart してからIBに戻って Custom Class の Designables を確認 (Updating -> Up to Date)になればおk ##参考 *
*
No comments:
Post a Comment
Newer Post
Older Post
Home
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment