我已经在一个运行良好的 OS X 应用程序中实现了一个自定义控件。绘制控件时,它使用来自非系统框架的代码。控件是用swift编写的,框架是用Objective-C编写的。框架未与具有自定义控件的应用程序构建在同一项目或工作区中。我已将框架添加到目标并将其添加到复制文件构建阶段。
当我快速将 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 现在可以正确绘制自定义控件。
这不是我需要的解决方案,但它指出了问题所在,我仍然需要找出正确的解决方案。