无法呈现IB Designables的实例

WeZ*_*ard 58 xcode objective-c interface-builder swift ibdesignable

我有一个Objective-C和Swift混合动态框架.混合框架与两个纯Objective-C动态框架相关联.

当我尝试使用IB Designable在混合框架中标记任何类并在storyboard或nib中使用该类时,Xcode总是说它的实例无法呈现.

并且有错误消息:

IB Designables:无法呈现WZUITokenField的实例:dlopen(WZUIKit.framework,1):未加载库:/ Library/Frameworks/WZFoundation.framework/WZFoundation引用自:WZUIKit.framework原因:图像未找到

IB Designables:无法更新自动布局状态:dlopen(WZUIKit.framework,1):未加载库:@ rpath/WZFoundation.framework/WZFoundation参考自:WZUIKit.framework原因:未找到图像

框架WZUIKit是Objective-C和Swift混合框架,WZFoundation是纯Objective-C.

此外,所有这些sutff都适用于任何设备或模拟器.

WeZ*_*ard 80

最后,我通过添加$(CONFIGURATION_BUILD_DIR)目标的构建设置Runpath Search Paths字段解决了这个问题.

另外,您可能需要对Xcode执行一些额外的步骤.

  1. 清除项目的Xcode派生数据.他们在~/Library/Developer/Xcode/DerivedData
  2. 按下清除当前版本 K
  3. 建立你的项目
  4. 在故事板中去Editor菜单做Refresh All Views; 等待构建完成,错误应该消失

感谢@Mojtaba

  • 构建设置称为"运行路径搜索路径"而不是"运行搜索路径" (5认同)
  • @WeZZard为了改进您的答案,请考虑在更新字段后添加以下步骤.1.清除项目的Xcode派生数据.2.在故事板中清理/构建3.去编辑并执行"更新所有视图"等待构建完成并且错误应该消失 (4认同)
  • 我有完全相同的问题,但这个解决方案不适合我.最近有人试过吗?Xcode 7.3/Swift 2.2?我正在使用CocoaPods将依赖项添加到我的应用程序,顺便说一下,版本1.0.0-rc.2. (2认同)

Ale*_*lex 18

如果您在构建Mac应用程序时遇到同样的问题,请添加@loader_path/../FrameworksRunpath Search Paths解决此问题.

  • 构建设置称为"运行路径搜索路径"而不是"运行搜索路径" (3认同)

Gab*_*iel 13

对我来说,它可以关闭xcode并重新打开它.之后没有错误.谢谢.


Sco*_*ant 6

我在包含IBDesignables的框架上遇到此错误。

我不得不添加$(FRAMEWORK_SEARCH_PATHS)LD_RUNPATH_SEARCH_PATHS设置在我的框架的目标。

更新运行路径设置,构建并刷新情节提要中的视图后,错误消失了。甚至不必清理build文件夹。

在此处输入图片说明


hso*_*soi 5

有趣。

首先,WeZZard的回答使我朝着正确的方向前进,但这并不是我的解决方案。

在我的iOS项目中,某些内容已覆盖Runpath Search Paths目标中的字段。它看起来像这样:

LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
Run Code Online (Sandbox Code Playgroud)

我尝试了添加的解决方案,$(CONFIGURATION_BUILD_DIR)但这对我不起作用。由于它不起作用,出于习惯,我只是删除了配置条目(返回项目默认值)。当我这样做时,它重置为:

LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
Run Code Online (Sandbox Code Playgroud)

如果我深入研究xcconfig文件,它似乎来自Cocoapods。

@loader_path关键是和Alex一样,但是iOS和Mac OS X的路径略有不同。

  • 我想你的意思是“@executable_path/../Frameworks”和“@loader_path/../Frameworks”。根据链接框架的构建方式,可能已在二进制文件上设置了一个或其他路径,并且出于某种原因,整个 IBDesignable 业务都在此窒息。就我而言,我必须在上面添加“@executable_path”。 (2认同)