首页 > 解决方案 > Interface Builder Inherit Module 从 Target 选择错误的目标

问题描述

我有一个包含三个方案的项目(Debug-MyApp、Beta-MyApp、MyApp)。该项目具有三种配置(Debug、Beta 和 AppStore)。此外,每个目标都会构建各自的配置。当我在 Interface Builder 中使用自定义类并使用“从目标继承模块”(默认值)时,它总是选择 Beta_MyApp 模块而不是我正在构建的任何目标(通常是 Debug-MyApp)。我在 xibs/storyboards 中验证了这一点,因为在 Xcode 中打开文件会导致 customModule 属性设置为 Beta-MyApp。

我还尝试将 Interface Builder Xib 默认模块和 Interface Builder Storyboard 默认模块的项目和目标设置都设置为 Debug_MyApp。

最终结果是我的自定义类都没有正确呈现;即使 Designables 说“最新”和“没有界面生成器错误发生”。

我当前的解决方法是将所有模块显式设置为 Debug_MyApp,而不是使用从目标继承模块,这会导致视图正确呈现。

有没有人经历过这个/知道如何补救?

标签: iosiphonexcodeinterface-builderxcode9

解决方案


由于我做了几件事,因此不确定到底有什么帮助,但是在最后一次更改之后,我不再遇到从目标继承模块的问题。

  • 将非主要目标的显示名称更改为与主要目标不同的名称
  • 将 project.pbxproj 文件中非主要目标的相应 IBSC_MODULE(默认模块)属性从例如“MyApp”更新为“Debug-MyApp”

似乎在复制现有(主)目标时,Xcode 根本没有更新 IBSC_MODULE 属性,因此 Interface Builder 认为他使用主目标进行操作,而不是复制一个。从这个角度来看,运行时错误似乎是合理的。


推荐阅读