Xcode 7 ibtool error: Deploying Storyboard References to iOS 8.0 requires that your storyboards do not share any view controller identifiers

Xcode 7 ibtool error: Deploying Storyboard References to iOS 8.0 requires that your storyboards do not share any view controller identifiers

我有一个针对 iOS 8 和 9 的 iOS 应用程序,我正在升级它以使用 Storyboard References 而不是通过代码链接。我逐渐转换了越来越多的位,突然我开始收到这个编译器错误:

: error: Deploying Storyboard References to iOS 8.0 requires that your storyboards do not share any view controller identifiers. A.storyboard and Z.storyboard both contain a view controller with identifier "ZNavigationController".

Z.storyboard绝对包含ZNavigationController,它应该在那里,但是A.storyboard肯定不包含任何这样的导航控制器。我在文本编辑器中打开了 .storyboard 文件并确认没有提到 ZNavigationController.

提供更多背景信息:

运行 XCode GM 种子版本 7.0 (7A218)

我做了更多的挖掘,结果发现即使 A.storyboard 没有任何与该情节提要 ID 相关的内容,B.storyboard 和 [=12= 中也有一个控制器] 都有 ZNavigationController 的 Storyboard ID。 B.storyboard 中的 ID 不正确,我已将其删除。

看起来 Xcode 将(正确的)错误归因于 A.storyboard 而不是 B

发现问题(我正在使用 Xcode 7.1.1)。

在使用 Product --> Refactor to storyboard 后,它创建了一个故事板引用,其故事板 ID 与引用 ID(属性和身份检查器)相同。

这是一个错误,故事板 ID 应该为 nil,只应填写参考 ID。

更新#1: 使用 "Refactor to storyboard" 创建多个故事板引用时,它会创建相同的对象 ID,这也会导致此错误。

更新#2: 如果您的目标是 iOS,请不要使用 "Refactor to storyboard" 功能 8. 它会创建多个带有 objectId 的双子,这会导致错误,例如:

/* com.apple.ibtool.errors */ : error: Deploying Storyboard References to iOS 8.0 requires that your storyboards do not share any view controller identifiers. Category.storyboard and Home.storyboard both contain a view controller with identifier "UIViewController-BX3-FJ-k0T".

首先你需要找到哪个Reference被加倍 UIViewController-5kv-Ul-Bah - 这是我的错误

按 cmd + 3 并输入没有“UIViewController-”的 id (5kv-Ul-Bah) 找到双重引用

你应该看到这样的东西

在我的例子中是 InvitationDetails.storyboard 和 Location.storyboard

您有 2 个选择:

选项 1:从故事板中删除 故事板参考 并添加另一个(按照我的其他说明执行此操作 )

选项 2:打开新创建的故事板作为源代码

然后找到我们的 id 并将其更改为另一个像 "5kv-Ul-Bahxx"(我添加了 xx 后缀)但是你需要确保字符串 "5kv-Ul -Bahxx" 在项目中不存在(通过按 cmd + 3 并查找)

  • 点击有问题的故事板参考
  • 打开身份检查器
  • 删除 "Storyboard ID".

据我所知,没有必要引用参考,这似乎是它抱怨的事情。当您使用 'refactor to storyboard' 时,它会在引用中留下故事板 ID。