【问题标题】:XCode no valid compiled storyboard at pathXCode在路径中没有有效的编译故事板
【发布时间】:2015-06-16 07:14:20
【问题描述】:

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

【问题讨论】:

  • 试试这个:[UIStoryboard storyboardWithName:@"UIControls.bundle/Config"bundle:[NSBundle mainBundle]];
  • 不,也不走运。
  • 您是否尝试过仅使用 Config 而不是路径'?
  • 或者只使用 config 和作为名称并从你的 UIControls.bundle 中创建一个 bundle 属性而不是 mainBundle
  • 其实,没关系,有同事来救了。 Bundle 本身并未将 iPad 包含在目标设备系列中。无论如何,谢谢你们!

标签: ios objective-c xcode storyboard


【解决方案1】:

回答我自己的问题;

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

【讨论】:

  • 谢谢!这让我快疯了。
【解决方案2】:

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

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

从现在开始,情节提要像以前一样工作!

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我面临同样的问题,可能的出路是什么?
    【解决方案4】:

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

    解决方案是禁用情节提要上的“使用尺寸等级”,并且只保留 iPad 的尺寸。

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

    【讨论】:

      【解决方案5】:

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

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

      在受影响的情节提要中,在 Interface Builder Document 下,我将“Builds for”值从“iOS 7.0 或更高版本”切换为“Project Deployment Target”(即 9.0),这对我有用。

      【讨论】:

        【解决方案6】:

        在我们的例子中,我们正在运行一个 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 失败/产生一个空目录时,我绝对认为它实际上应该失败并停止编译,因为否则一切看起来都正确设置并正确,但实际上并非如此。

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

        【讨论】:

          【解决方案7】:

          我遇到了这个问题,因为状态栏样式的情节提要颜色发生了变化,而项目设置中没有变化

          【讨论】:

            【解决方案8】:

            对我来说解决方案是:

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

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

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

            [self performSegueWithIdentifier:@"Segue" sender:self];

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

            【讨论】:

              【解决方案9】:

              有同样的问题。解决了购买在Link Bindary with Libraries 中添加libc++.tbd

              【讨论】:

                猜你喜欢
                • 2017-02-27
                • 2017-02-22
                • 2017-03-05
                • 1970-01-01
                • 1970-01-01
                • 2013-09-25
                • 2015-06-17
                • 2015-12-14
                • 1970-01-01
                相关资源
                最近更新 更多