在捆绑包中找不到名为“Main”的情节提要

Could not find a storyboard named 'Main' in bundle

提问人:Carpetfizz 提问时间:10/8/2013 最后编辑:Remi GuanCarpetfizz 更新时间:11/20/2023 访问量:146898

问:

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

我的目录中有该文件,它在模拟器中工作正常。但是,在该部分中,文件是红色的。Copy Bundle ResourcesMain.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
iPhone iOS Objective-C Xcode

评论

0赞 Alex Cio 1/14/2014
我在这篇文章中描述了如何解决问题:stackoverflow.com/a/21098195/1141395
0赞 Krishnabhadra 11/5/2015
此问题主要是由于应用程序安装损坏而发生的。解决方案是清理和生成项目。此外,从设备/模拟器中删除现有应用,然后再次运行。
0赞 Cemen 1/5/2020
Xcode 11 用户,向下滚动到 stackoverflow.com/a/58452686,可能这正是您的情况。

答:

129赞 Kalpit Gajera 10/8/2013 #1

打开项目的 Info.plist 并删除屏幕截图中显示的所选行enter image description here

如果您出现黑屏,请确保选择新的初始故事板作为主界面enter image description here

2021年...

您还必须编辑 .请参阅下面的最新答案。UIApplicationSceneManifest

评论

29赞 Carpetfizz 10/8/2013
谢谢,但这只是让我的应用程序以黑屏启动。不过没有崩溃。
1赞 Joel Hansen 5/31/2014
确保在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions...: (1) self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];(2) self.window.backgroundColor = [UIColor whiteColor];
0赞 Alserda 4/16/2015
@ Carpetfizz 将 '[self.window makeKeyAndVisible]; 添加到您的 AppDelegate。
5赞 Umit Kaya 4/22/2016
“应用程序启动黑屏”,没有人对此有任何想法?
1赞 Stephane Paquet 7/26/2019
@Umitk将背景设置为白色 (view.backgroundColor = .white) 或您喜欢的任何其他颜色
63赞 Geekoder 10/8/2013 #2

您可以检查情节提要的目标成员资格。可能问题出在哪里:

它应该看起来像这样:

Target Membership

评论

0赞 pyj 11/25/2014
我遇到了同样的问题,起初我以为我没有将正确的资源复制到目标,但修复目标成员身份解决了这个问题。
2赞 Jim Geldermann 9/28/2015
谢谢,工作了!我做了清理,重命名文件,更新Plist,没有喜悦。它总是最明显的,让你。
0赞 DrPatience 11/26/2015
嗨,我遇到了同样的问题,但没有显示目标会员窗口,Xcode 7。请帮忙
1赞 Ümañg ßürmån 6/19/2020
出于某种原因,我的目标没有被选中。谢谢你的回答。.解决!!
0赞 Chris 11/11/2013 #3

选择 main.storyboard,将视图更改为 iOS 6.1 及更早版本,然后 xcode 会告诉你你需要做什么。

enter image description here

13赞 kraftydevil 12/17/2013 #4

我遇到了这个错误,但是,我打算完全删除故事板。

从我的 plist 中删除“Main Storyboard file base name”键修复了该错误。

7赞 user2580666 5/8/2014 #5

模拟器不区分大小写,但设备区分大小写。如果情节提要称为 MainStoryboard,而不是 MainStoryBoard,则会导致出现问题。 和 aslo * 不要使用扩展,只写故事板名称

main.storyboard ->唯一的 main 是情节提要名称

1赞 seashore liu 9/18/2014 #6

删除plist中的行也导致我的应用程序中出现黑屏。我通过启用故事板的目标成员身份来修复它

0赞 Sven Vietense 1/4/2015 #7

我的解决方案是:

当我在两个视图之间添加 Seque Connection 并且在 Projekt 配置中部署目标低于 8.0 时,我收到此错误。

好的,很容易理解,当您针对 IOS 6.0 进行开发时(例如),您不能使用 Seque,因为 Seque 需要 IOS 8.0 或更高版本。

因此,我将部署目标设置为 8.0,错误就消失了! 其他时候,我取消了所有 Segue 连接并使用 IBAction 处理它,老派。

15赞 jeremywhuff 5/19/2015 #8

我从手机中删除了该应用程序,执行了 Product-->Clean,然后再次加载。这就是我所做的一切。

评论

0赞 Aruna M 11/20/2018
对于每次执行,如果删除,那么只有它执行我......请在 Xcode 10.1 中帮助我
-1赞 iSpeedyG 10/7/2015 #9

我所做的是将main.storyboard从Finder移到我的桌面上。进行了清理和构建并退出 Xcode。重新启动了 Xcode,现在它有一个红色的 main.storyboard。我运行它实际上做同样的事情。然后我右键单击项目文件夹并选择选项将文件添加到...浏览到它所在的位置并打开它。然后,当它在那里时,右边应该是身份检查器。单击位置下的小文件夹。再次浏览到该文件夹,然后选择“选择”。然后我跑了,它起作用了。

10赞 Randika Vishman 5/9/2016 #10

#Could 捆绑包中找不到名为“Main”的情节提要

我能想到的原因:

就我的 iOS 知识而言,这只是因为 XCode 无法在我的项目目录中找到对 Main.storyboard 文件的引用以将其复制到应用程序中。

分辨率:

  1. 选择Main.storyboard文件并尝试删除,然后从弹出的对话框中删除,如下所示:enter image description here

  2. 单击“删除引用”按钮。

  3. 然后,从我可以在项目目录中找到 Main.storyboard 文件的实际位置,拖放到 XCode,然后再次从弹出的对话框中再次显示,如下所示:enter image description here

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

    enter image description here

注意:在此步骤中要提醒的一件重要事情是,不要忘记在应用程序的“添加到目标”复选框上勾选它。

  1. 清理产品,重新构建,如果成功,大多数时候尝试运行它就会成功。

我在 XCode 7.3.1 和 iOS Sim 9.3 和 iPhone 6S 上尝试过这个!

评论

0赞 Aruna M 11/20/2018
请帮助解决这个问题,在安装 os10.14.1 和 xc0de 10.1..am 尝试解决 3 天后也面临这个问题,但仍然......我的项目在 xcode9.1 中运行良好。
0赞 Randika Vishman 11/20/2018
@ArunaM 您是否尝试过我在答案中给出的上述步骤?这样做后的状态如何?
1赞 Slarty Bartfast 5/31/2020
当我从项目中删除 ViewController 时,这就是解决方案,这导致了同样的错误!
0赞 Aqib Mumtaz 5/19/2016 #11

我正在将Main.Storyboard文件移动到导致问题的“蓝色”子文件夹,我必须按照以下说明添加子文件夹 Xcode 6.3 新文件问题

然后将Main.Storyboard文件移动到黄色子文件夹对我有用

8赞 Vicky 5/29/2016 #12

请按照以下步骤操作:

1)首先点击你的故事板

2)然后单击文件检查器

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

Screen Shot

1赞 Mavin Martin 7/13/2016 #13

正如 Kalpit Gajera 所说,“打开项目的 info.plist 并删除屏幕截图中显示的选定行”。您只需从 Info.plist 中删除“主情节提要文件基本名称”。删除它、清理并运行后,程序将不再失败,但会显示黑屏。再次打开 Info.plist 并手动重新添加该行。问题解决了。

4赞 user1195202 1/30/2019 #14
  1. 打开情节提要文件
  2. 然后点按“文件检查器”
  3. 然后选择“目标会员资格”并检查您的项目
  4. 对 ViewController 文件执行相同的操作!!如果将 ViewController.swift 或 ViewController.m 与情节提要一起使用,则为重要部分!!
2赞 LentoMan 2/14/2019 #15

升级到 Xcode 10.1 后,两种不同的解决方案对我有用:

  • 文件>工作区(或项目)设置中。切换到旧版构建系统

  • 在目标构建阶段中,从“复制捆绑包资源”(如果列出)中删除 Base.lproj 文件夹,并确保单独列出和复制每个情节提要。

应用上述任一修复程序后,请确保从“产品”菜单中清理一次“构建文件夹”,否则修复程序可能无法正常工作。

0赞 Craig D 5/9/2019 #16

通过从 ..xmlMain.storyboard.xml file

显然,后缀与我导入项目的版本不同。

因此,重命名文件(删除后缀)并重新启动,然后解决了问题。.xmlProject-> clean....

26赞 ricardopereira 10/18/2019 #17

在 iOS 13 和 Xcode 11 中使用 UIScene 的项目中,您需要从 .UISceneStoryboardFile.plist

Xcode 11:

xcode11-uiscene

直接从文件更改:

uiscene-plist

113赞 Dracula 10/27/2019 #18

对于在 Xcode 11 上遇到此问题的任何人,如果您在进行无故事板项目设置时遇到此问题,以下是解决此问题的方法

(添加里卡多佩雷拉遗漏的一些部分)

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

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

在主界面下拉列表中,删除文本 Main

removing reference to main from general settings

3)现在转到info.plist并删除故事板名称

removing reference to the storyboard from info.plist

4)最后,修改文件SceneDelegate.swift中的scene(_:willConnectTo:options)代码(是的!它不再在 App Delegate 中。

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()
    }

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

评论

7赞 Reza Dehnavi 11/2/2019
你的答案几乎是正确的,只是场景功能有一点变化: 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() }
4赞 jboulter11 12/10/2019
为了增加一些强调,info.plist 条目不仅是通常的主情节提要条目,也是应用程序场景清单中的条目,这是 iOS 13 的新功能。我不得不通读两遍才意识到。
0赞 Yuchen 5/29/2020
这是现在正确的做事方式!^^苹果一直在改变事情。
1赞 Chucky 2/16/2021
如果你是 Xamarin 开发人员,我发现这非常有用:talkwithangel.com/......
0赞 ambassador 9/20/2023
对我来说,在构建设置中没有“主界面”字段。相反,我不得不在“构建设置”>“Info.plis 值”下删除“UIKit Main Storyboard File Base Name”条目>
8赞 nomnom 11/16/2019 #19

Swift 5.1 和 xCode 11.2

就我而言,我忘记在 Info.plist 中更改 Storyboard 名称

enter image description here

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>
62赞 Shubham 11/16/2019 #20

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

如果收到错误“即使在 Target 的 Info.plist 和 Target 的部署下更改了”主情节提要文件基名称“和”主界面“后,也无法在捆绑包中找到名为'Main'的情节提要”。

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

  1. 打开 info.plist 文件。
  2. 展开“Application Scene Manifest”。
  3. 展开“场景配置”。
  4. 展开“应用程序会话角色”下的项 0,然后在此处更改情节提要名称。

enter image description here

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

评论

1赞 NRitH 2/19/2020
这绝对是正确的答案。显然,从“常规”>“主界面”下拉列表中设置主要情节提要是不够的。
1赞 Greg Brown 3/29/2020
谢谢你。删除“Application Scene Manifest”键(及其所有子键)为我解决了这个问题。
3赞 Amir Ehsanijam 6/24/2021
谢谢,这对我有用。如果视图是以编程方式设置的,则只需将值设置为“LaunchScreen”。
-1赞 Akashascosset 3/21/2020 #21

选择要首先在情节提要左侧列表中显示的视图控制器,然后在属性检查器中确保其标题为“Main”,并且选中了“Is Initial View Controller”复选框。

4赞 saumya ranjan Gangwar 4/21/2020 #22

当您在删除文件后从垃圾箱中恢复 main.storyboard 文件时,会出现此错误。我昨天也遇到了同样的问题。

您必须在 main.storyboard 的文件检查器中将 main.storyboard 的位置路径设置为相对于组。之后,在同一属性中,您必须确保应用程序目标上的复选标记(如附图所示)。

enter image description here

1赞 Sagar Thukral 8/23/2020 #23

如果仍然有黑屏,请尝试在场景委托中添加以下代码

willConnectTo

    guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    let navController = UINavigationController()
    let mainstoryboard:UIStoryboard = UIStoryboard(name: "Your storyboard name", bundle: nil)
    let initialController = mainstoryboard.instantiateViewController(withIdentifier: "your initial controller Identifier") as! initialController
    navController.addChild(initialController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()
0赞 Sk Borhan Uddin 9/29/2020 #24

如果你的故事板被添加到项目中(你将从 xcode 实用工具区域的“项目文件检查器”部分确定)Check box is marked in target membership area

您只需从“复制捆绑包资源”(在 中)中删除,然后在“复制捆绑包资源”中再次添加它。这对我有用。Main.StoryboardBuild Phaseenter image description here

6赞 Neha Vipin 2/17/2021 #25

此外,请尝试删除 Storyboard 名称

enter image description here

-3赞 Kerak 6/8/2021 #26

就我而言,这是由于 Pod 库已过时

删除 /Pods 文件夹并为我修复它pod install

0赞 JESTIN SAJI 6/28/2022 #27

注意:如果某些 ViewController 缺少“在捆绑包中找不到名为'ReceiverViewController'的情节提要”,则可以在 storyBoard id 中添加 ViewController 的名称,并使用以下代码进行导航

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyBoard.instantiateViewController(withIdentifier: "ReceiverViewController") as! ReceiverViewController
    self.navigationController?.pushViewController(vc, animated: true)
1赞 zeeshan 8/19/2022 #28

对于名为我的项目,我将主情节提要的名称更改为 .除了在文件中更改它之外,我还必须在构建设置中更改它,如屏幕截图所示。ZHE Adminhomeinfo.plist

enter image description here

7赞 John_Gers 9/18/2022 #29

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

评论

0赞 dokkaebi 10/3/2022
这适用于 Apple 的 LiDARDepth 示例项目。
11赞 Dohyeon 10/14/2022 #30

如果您的 xcode 版本为 14.0.1 或更高版本,enter image description here

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

目标 enter image description here -> 信息 -> 主情节提要文件基本名称 值应删除。

4赞 Mamoon Yameen 11/16/2022 #31

在 XCode 14.1 中,如果您不想使用 Main.StoryBoard 并将其删除,请参阅步骤 4 中的图像并删除“Main”。

如果您添加了主故事板,请在步骤 4 中写下“Main”。This Image is showing you how you can resolve this Main problem

评论

1赞 ribeto 5/16/2023
刚刚在运行 Xcode 14.3 时遇到了这个问题。这解决了我的问题。我确实做了一个 cmd+shift+f 并搜索了“main”,这也使我在帖子的屏幕截图中找到了带有 4 的确切行标签