无法在捆绑中找到名为"Main"的故事板

Car*_*izz 59 iphone xcode objective-c ios

我收到一个奇怪的错误:'Could not find a storyboard named 'Main' in bundle NSBundle'试图在真正的iOS设备上运行我的应用程序.

我在我的目录中有文件,它在模拟器中工作正常.但是,在该Copy Bundle Resources部分中,文件Main.storyboard为红色.

我已经尝试删除它并再次添加它,重新启动Xcode,清理构建等,但无济于事.这是我在Xcode中收到的警告:

/Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard: Internationalization of /Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard is not available when compiling for targets before iOS 6.0
Run Code Online (Sandbox Code Playgroud)

Kal*_*era 78

打开项目的info.plist并删除屏幕截图中显示的选定行在此输入图像描述

如果您出现黑屏,请确保选择新的初始故事板作为主界面 在此输入图像描述

  • 谢谢,但这只是让我的应用程序启动黑屏.虽然没有崩溃. (20认同)
  • "应用程序以黑屏启动",没人知道这个吗? (4认同)

Shu*_*ham 52

为 iOS 13.0 及更高版本创建的应用程序的更新。(Xcode 11)

如果您收到错误消息“即使更改了 info.plist 中的“主故事板文件基本名称”和 Target 中部署下的“主界面”,也无法在包中找到名为“Main”的故事板。

然后您必须更改 info.plist 文件中的另一个条目。

  1. 打开 info.plist 文件。
  2. 展开“应用场景清单”。
  3. 展开“场景配置”。
  4. 展开“Application Sessions Role”下的项目 0,然后在那里更改情节提要名称。

在此处输入图片说明

您的应用程序将开始工作。

  • 谢谢这对我有用。如果视图是以编程方式设置的,您只需将该值设置为“LaunchScreen”即可。 (4认同)

Gee*_*der 51

您可以检查故事板的目标成员身份.可能存在问题所在:

应该看起来像这样:

目标会员

  • 谢谢,辛苦了!我没有高兴地清理,重命名文件,更新Plist。它总是让您最明显的。 (2认同)

ric*_*ira 22

UISceneiOS 13 和 Xcode 11中使用的项目中,您需要UISceneStoryboardFile.plist.

Xcode 11:

xcode11-uiscene

直接从文件更改:

uiscene-plist


use*_*430 14

我从手机中删除了应用程序,做了产品 - >清洁,然后再次加载.这就是我所需要的一切.


小智 13

如果你的Xcode版本是14.0.1或更高版本, 在此输入图像描述

删除图中所示的“UIKit Main Storyboard File Base Name”中的名称。

在此输入图像描述 目标 -> 信息 -> 主故事板文件基本名称值应删除。


kra*_*vil 9

我收到了这个错误,但我打算完全删除故事板.

从我的plist中删除'Main Storyboard文件基本名称'键可以解决错误.


小智 9

Xcode 14 中的新增功能,设置主界面已移至 Targets -> Build Settings -> Info.plist value -> UIKit Main Storyboard File Base Name。您需要从此处删除引用,而不是像以前一样在部署信息下删除引用。


Ran*_*man 7

无法在捆绑中找到名为"Main"的故事板

我能想到的原因:

至于我的iOS知识总结,我刚刚发生这种情况,因为XCode无法在项目目录中找到对Main.storyboard文件的引用,无法将其复制到App中.

解析度:

  1. 选择Main.storyboard文件并尝试删除,并弹出如下弹出的对话框: 在此输入图像描述

  2. 单击"删除参考"按钮.

  3. 然后,从我可以在项目目录中找到Main.storyboard文件的实际位置,拖动并删除到XCode,再次从弹出的对话框中,如下所示: 在此输入图像描述

  4. 我选择了"创建文件夹引用"(因为这是我打算做的一件事,因为我已经改变了我的项目的文件和文件夹结构).但大多数时候选择"创建群组"也可能有效.然后点击"完成"按钮.我的Storyboard文件已经在屏幕截图中显示,Base.lproj如下所示:

    在此输入图像描述

    注意:在这一步提醒一件重要的事情是,不要忘记在应用程序的"添加到目标"复选框上打勾.

  5. 清洁产品,重新构建,如果成功,大多数时候尝试运行它将会成功.

希望这可能对其他人有帮助!我在XCode 7.3.1和iOS Sim 9.3和iPhone 6S上试过这个!


Vic*_*cky 7

按照步骤:

1)首先点击您的故事板

2)然后单击文件检查器

3)然后选择“目标会员”

屏幕截图


nom*_*nom 7

斯威夫特 5.1 和 xCode 11.2

就我而言,我忘了改Storyboard NameInfo.plist

在此处输入图片说明

Info.plist 源代码

    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneStoryboardFile</key>
                    <string>AccountViewController</string>
                </dict>
            </array>
        </dict>
    </dict>
Run Code Online (Sandbox Code Playgroud)


小智 6

模拟器不区分大小写,但设备是.如果您的故事板被称为MainStoryboard,而不是MainStoryBoard,这将导致您的问题.并且aslo*不要使用扩展名只写故事板名称

main.storyboard - >只有main是故事板名称


Par*_*ane 6

对于在Xcode 11上遇到此问题的任何人,以下是解决此问题的方法,如果在较少情节提要的项目设置中遇到此问题,

(添加ricardopereira遗漏的一些部分)

1)首先,删除Main.storyboard文件

2)接下来,转到PROJECT_NAME- > GENERAL

在主界面下拉菜单中,删除文本Main

从常规设置中删除对main的引用

3)现在转到info.plist并删除情节提要名称

从info.plist删除对故事板的引用

4)最后,修改场景(_:willConnectTo:选项)在文件中的代码SceneDelegate.swift!(是的,这不是在应用代表了)。

var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
    }
Run Code Online (Sandbox Code Playgroud)

您也可以参考以下视频:https : //www.youtube.com/watch?v=Htn4h51BQsk

  • _**你的答案几乎是正确的,只是场景函数有一点变化:**_ `guard let _ = (scene as? UIWindowScene) else { return } let viewController = ViewController() if let windowScene = scene as? UIWindowScene { self.window = UIWindow(windowScene: windowScene) self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() }` (6认同)
  • 需要强调的是,info.plist 条目不仅仅是通常的主情节提要条目,而且也是 iOS 13 新增的应用程序场景清单中的条目。我必须通读两遍才能意识到。 (3认同)

Neh*_*pin 6

另外,尝试删除情节提要名称

在此输入图像描述