正常に動作する OS X アプリケーションにカスタム コントロールを実装しました。コントロールが描画されると、非システム フレームワークのコードが使用されます。コントロールは迅速に書かれており、フレームワークはObjective-Cです。フレームワークは、カスタム コントロールを持つアプリケーションと同じプロジェクトまたはワークスペースに構築されていません。フレームワークをターゲットに追加し、それをコピー ファイル ビルド フェーズに追加しました。
Swift で IBDesignable 装飾をカスタム コントロール クラスに追加すると、Interface Builder でコントロールを表示しようとするとエラーが発生します。私が得るエラーは次のとおりです。
file:///Users/ktam/github/MovingImagesDemo/Spinner2/SpinnerController.xib: error: IB Designables: Failed to render instance of Spinner:
dlopen(Spinner2.app, 1): Library not loaded: @executable_path/../Frameworks/MovingImages.framework/Versions/A/MovingImages
Referenced from: Spinner2.app
Reason: image not found
IBDesignables サブフォルダーに作成されたアプリケーション バンドルを確認すると、フレームワークはアプリケーション バンドル内の正しい場所にあります。この場合、実際に実行されている実行可能ファイルは IBDesignables アプリケーション バンドルのものではなく、フレームワーク イメージをロードできない理由を説明するある種の Interface Builder 実行可能ファイルであると想定しています。
Interface Builder が IBDesignable でビューをレンダリングするときに見つけることができるコードをロードするには、何をする必要がありますか?
さらにテストした後の情報:
インストール ディレクトリを ~/Library/Frameworks に指定してフレームワークを再構築し、ビルドしたフレームワークをその場所にコピーしました。次に、実行パスの検索パスに ~/Library/Frameworks とアプリケーションとインターフェイスの両方が含まれるようにアプリケーション ターゲットを更新しました。 Builder はカスタム コントロールを正しく描画するようになりました。
これは私が必要とする解決策ではありませんが、問題が何であるかを示しています。適切な修正が何であるかを理解する必要があります.