我有一个适用于 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 和 iPad。
在将项目从通用目标切换到仅限 iPad,并将部署目标从 iOS 9.0 切换到 iOS 7.1 后,刚刚遇到了这个问题。
解决方案是禁用情节提要上的“使用尺寸类别”,并仅保留 iPad 的尺寸。
要访问此复选框,请在项目导航器中打开故事板,然后选择显示文件检查器(第一个图标)并向下滚动到 Interface Builder 文档标题。
我正在使用自定义 Cocoapod 中的 Storyboard,但它一直崩溃
路径中似乎没有“有效的已编译故事板”...
在受影响的故事板中,在 Interface Builder Document 下,我将“Builds for”值从“iOS 7.0 或更高版本”切换为“Project Deployment Target”(即 9.0),这对我来说很有效。
我对我之前的评论感到抱歉。
我不知道为什么它不起作用,但目前我通过以下步骤解决了该问题:
从现在开始,故事板像以前一样工作!
我试图修复这个问题 2 天,没有希望,直到我发现它也没有打开 sqlite 数据库文件,此后数据库故障后所有内容都损坏了。这就是我的情况。即使 ARC 在完成后将数组或字典设置为 nil,所有这些都是内存问题;
在我们的例子中,我们正在运行一个 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 失败/生成空目录时,我绝对认为它实际上应该失败并停止编译,因为否则一切看起来都已正确设置和正确,但实际上并非如此。
所以,我们的解决方案是升级应用程序的最低部署目标。
对我来说解决方案是:
我使用此代码加载新的视图控制器 - [UIStoryboardstoryboardWithName:@"UIViewController"bundle:nil];
首先我尝试 - [UIStoryboardstoryboardWithName:@"UIViewController"bundle:[NSBundle mainBandle]];
但不太幸运,最后我将这段代码更改为:
[self PerformSegueWithIdentifier:@"Segue"发件人:self];
它有帮助,也许它也可以帮助别人。
我在 xcode 16、iOS 18 上运行旧项目时遇到了这个问题。解决方案是将构建设置中的 Targeted Device Family 设置为 iPhone。
有同样的问题。解决了,购买在
libc++.tbd
中添加 Link Bindary with Libraries
。