XCode 路径中没有有效的已编译故事板

XCode no valid compiled storyboard at path

我有一个针对 iPad 和 iPhone 的通用 XCode 项目 (ObjC),其子项目包含故事板。 子项目是添加到主项目中的静态库。此子项目中包含一个包含定制故事板的包。

当我点击应用程序的某个按钮时,需要加载故事板;

[UIStoryboard storyboardWithName:@"UIControls.bundle/Config" bundle:nil];

这对于 iPhone(设备和模拟器)来说工作得很好,但是每当我尝试 运行 项目和 iPad(设备或模拟器)时,我出现以下错误;

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'There doesn't seem to be a valid compiled storyboard at path...

关于什么的?该项目是一个通用项目,为什么 iPad 找不到故事板?

回答我自己的问题;

当包目标不通用时会出现此错误。 因此,请确保捆绑包构建设置中的目标设备系列设置为 iPhone AND iPad.

对于之前的评论,我深表歉意。
我不知道为什么它不起作用,但目前我通过以下步骤解决了这个问题:

  1. 转到 Project Target -> Info,然后删除键的 KeyValue 对象 Main storyboard file base name and Main storyboard file base name (iPad)
  2. 为确保它已完全删除,请转到 Info.plist 文件并验证那里不存在 KeyValue 对象。如果是,则也从那里删除。
  3. 从 Xcode 项目中删除对故事板的引用。
  4. 通过右键单击 Xcode 中的项目 -> 将文件添加到 project_name,将故事板添加回项目,勾选 根据需要复制项目创建组和项目目标选项。
  5. 在 Project Target –> Info 中为 iPhone 和 iPad 设置 Storyboards 名称,方法是添加之前删除的 KeyValue 对象。

从现在开始故事板像以前一样工作!

我试图解决这个问题 2 天,没有希望,直到我发现它也没有打开 sqlite 数据库文件,然后在这个数据库失败后一切都被破坏了。那是我的情况。所有这些都是内存问题,即使 ARC 在完成后设置数组或字典为 nil;

将项目从通用目标切换到仅 iPad,并将部署目标从 iOS 9.0 切换到 iOS 7.1 后,只需 运行 即可。

解决方案是在故事板上禁用 'Use Size Classes',只保留 iPad 的尺寸。

要找到此复选框,请在项目导航器中打开故事板,然后 select 然后显示文件检查器(第一个图标)并向下滚动到 Interface Builder 文档标题。

我正在使用来自自定义 Cocoapod 的 Storyboard,它一直崩溃

There doesn't seem to be a "valid compiled storyboard" at path ...

在受影响的情节提要中,在 Interface Builder 文档下,我将 "Builds for" 值从 "iOS 7.0 or later" 切换为 "Project Deployment Target"(即 9.0),这对我有用。

在我们的例子中,我们 运行 正在执行一个 shell 脚本,该脚本执行 XCode 的命令行工具之一,ibtool

ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target 6.0 --output-format human-readable-text --compile ./Build/Release-iphonesimulator/TestApp.app/TestStoryboard.storyboardc ./Resources/TestStoryboard.storyboard --sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk

虽然它 似乎 到 运行 没有错误,但它实际上产生了一个空的 storyboardc 目录。将最低部署目标升级到 8.0 生成了一个正确构造的 storyboardc,其中包含一个 Info.plist 文件。当 IBTool 失败/生成一个空目录时,我绝对认为它实际上应该失败并停止编译,因为否则一切看起来都已正确设置和正确,但实际上并非如此。

是的,我们的解决方案是升级我们应用程序的最低部署目标。

我遇到这个问题是因为 Status Bar Style 的 Storyboard 颜色发生了变化,但在项目设置中没有发生变化

对我来说解决方案是:

我使用这段代码加载了一个新的视图控制器 - [UIStoryboard storyboardWithName:@"UIViewController" bundle:nil];

首先我尝试了 - [UIStoryboard storyboardWithName:@"UIViewController" bundle:[NSBundle mainBandle]];

但是运气不好,最后我把这段代码改成了:

[自己执行SegueWithIdentifier:@"Segue" sender:self];

它有帮助,也许它也可以帮助其他人。

有同样的问题。解决了在 Link Bindary with Libraries.

中添加 libc++.tbd