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

时间:2015-04-10 14:08:51

标签: ios objective-c xcode storyboard

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

9 个答案:

答案 0 :(得分:16)

回答我自己的问题;

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

enter image description here

答案 1 :(得分:3)

刚刚将项目从Universal目标切换到iPad,然后将部署目标从iOS 9.0切换到iOS 7.1。

解决方案是禁用'使用大小等级'在故事板上,只保留iPad的尺寸。

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

答案 2 :(得分:2)

我正在使用自定义Cocoapod的故事板,并且它一直在崩溃

  

似乎并不是一个有效的编译故事板"在路径...

在受影响的故事板中,在Interface Builder Document下,我切换了" Builds for"价值来自" iOS 7.0或更高版本"到"项目部署目标" (这是9.0),这对我有用。

答案 3 :(得分:0)

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

  1. 转到项目目标 - >信息然后删除键主故事板文件基本名称主故事板文件基本名称(iPad)的KeyValue对象。
  2. 要确保将其完全删除,请转到Info.plist文件并验证KeyValue对象是否存在。如果是,那么也从那里删除。
  3. 从Xcode项目中删除对Storyboards的引用。
  4. 右键点击Xcode中的项目,将故事板添加回项目 - >将文件添加到 project_name ,勾选复制项目(如果需要)创建组和项目目标选项。
  5. 在Project Target中为iPhone和iPad设置故事板名称 - >信息,通过添加以前删除的KeyValue对象。
  6. 从现在起,故事板就像以前一样工作!

答案 4 :(得分:0)

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

答案 5 :(得分: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失败/产生一个空目录时,我肯定认为它实际上应该失败,并停止编译,因为否则一切看起来都是正确设置和纠正,实际上并非如此。

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

答案 6 :(得分:0)

由于状态栏样式的故事板颜色发生了变化而在项目设置中未更改

,因此出现此问题

答案 7 :(得分:0)

对我而言,解决方案是:

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

首先我试过 - [UIStoryboard storyboardWithName:@“UIViewController”bundle:[NSBundle mainBandle]];

但没有幸运,最后我将此代码更改为:

[self performSegueWithIdentifier:@“Segue”sender:self];

它有所帮助,也许它可以帮助某人。

答案 8 :(得分:0)

有同样的问题。解决了购买时在<form action="#"> <!-- Don't use HTML tags because of the way they get formatted on the page (i.e. <h1>, <h2>, <h3>, etc.). Use tags because of the meaning they convey about the data. Then, style them any way you want with CSS. --> <p class="questionTitle">Enter Name</p> <input id="name" type="text" name="name"> <input id="submit" type="button" value="Enter"> </form> <section class="results hidden"> <h1>Swab barque interloper chantey doubloon starboard</h1> <span></span> </section>中添加libc++.tbd的问题。