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

问题描述 投票:0回答:10

我有一个适用于 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找不到故事板?

ios objective-c xcode storyboard
10个回答
16
投票

回答我自己的问题;

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

enter image description here


3
投票

在将项目从通用目标切换到仅限 iPad,并将部署目标从 iOS 9.0 切换到 iOS 7.1 后,刚刚遇到了这个问题。

解决方案是禁用情节提要上的“使用尺寸类别”,并仅保留 iPad 的尺寸。

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


2
投票

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

路径中似乎没有“有效的已编译故事板”...

在受影响的故事板中,在 Interface Builder Document 下,我将“Builds for”值从“iOS 7.0 或更高版本”切换为“Project Deployment Target”(即 9.0),这对我来说很有效。


0
投票

我对我之前的评论感到抱歉。
我不知道为什么它不起作用,但目前我通过以下步骤解决了该问题:

  1. 转到项目目标 -> 信息,然后删除键 Main Storyboard file base nameMain Storyboard file base name (iPad) 的 KeyValue 对象。
  2. 为了确保它被完全删除,请转到 Info.plist 文件并验证 KeyValue 对象不存在于其中。如果是,也从那里删除。
  3. 从 Xcode 项目中删除对 Storyboard 的引用。
  4. 通过右键单击 Xcode 中的项目 -> 将文件添加到 project_name,将 Storyboard 添加回项目,勾选 Copy items if needCreate groups 和项目目标选项。
  5. 通过添加之前删除的 KeyValue 对象,在 Project Target –> Info 中设置 iPhone 和 iPad 的 Storyboard 名称。

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


0
投票

我试图修复这个问题 2 天,没有希望,直到我发现它也没有打开 sqlite 数据库文件,此后数据库故障后所有内容都损坏了。这就是我的情况。即使 ARC 在完成后将数组或字典设置为 nil,所有这些都是内存问题;


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 失败/生成空目录时,我绝对认为它实际上应该失败并停止编译,因为否则一切看起来都已正确设置和正确,但实际上并非如此。

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


0
投票

我遇到这个问题是因为状态栏样式的故事板颜色发生了变化,并且项目设置中没有更改


0
投票

对我来说解决方案是:

我使用此代码加载新的视图控制器 - [UIStoryboardstoryboardWithName:@"UIViewController"bundle:nil];

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

但不太幸运,最后我将这段代码更改为:

[self PerformSegueWithIdentifier:@"Segue"发件人:self];

它有帮助,也许它也可以帮助别人。


0
投票

我在 xcode 16、iOS 18 上运行旧项目时遇到了这个问题。解决方案是将构建设置中的 Targeted Device Family 设置为 iPhone。

在此输入图片描述


-1
投票

有同样的问题。解决了,购买在

libc++.tbd
中添加
Link Bindary with Libraries

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.