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


86

我收到一个奇怪的错误:'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

我描述了如何解决此帖子中的问题: stackoverflow.com/a/21098195/1141395
Alex Cio 2014年

发生此问题的主要原因是应用程序安装损坏。解决方案是清理并构建项目。同时从设备/模拟器中删除现有应用,然后再次运行。
Krishnabhadra 2015年

Xcode 11用户,请向下滚动至stackoverflow.com/a/58452686,可能正是您的情况。
Cemen

Answers:


92

打开项目的info.plist并删除屏幕快照中显示的所选行在此处输入图片说明

如果出现黑屏,请确保已将新的初始情节提要板选择为主界面 在此处输入图片说明


24
谢谢,但这使我的应用启动时出现黑屏。虽然没有崩溃。
Carpetfizz 2013年

确保您的-(BOOL)应用程序中有这两行:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ...:(1)self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]界线]]; (2)self.window.backgroundColor = [UIColor whiteColor];
乔尔·汉森

@ Carpetfizz添加'[self.window makeKeyAndVisible];' 到您的AppDelegate。
Alserda

4
“应用程序启动时出现黑屏”,没有人对此有任何想法吗?
Umit Kaya

@Umitk将背景设置为白色(view.backgroundColor = .white)或您喜欢的任何其他颜色
Stephane Paquet,

59

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

它应该看起来像这样:

目标会员


我遇到了同样的问题,起初我以为我没有将正确的资源复制到目标,但是修复目标成员身份可以解决此问题。
pyj 2014年

2
谢谢,辛苦了!我没有高兴地清理,重命名文件,更新Plist。它总是最明显的带给你。
Jim Geldermann

嗨,我遇到了同样的问题,但是目标会员窗口未显示,
Xcode7

由于某些原因,未选择我的目标。.谢谢您的回答..解决了!
Ümañgßürmån

58

对于在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()
    }

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


3
您的答案几乎是正确的,只是场景功能发生了一点变化: 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() }
Reza Dehnavi

3
要强调一点,info.plist条目不仅是通常的主故事板条目,而且还是应用程序场景清单中的条目,这对于iOS 13来说是新的。在意识到之前,我必须通读两次。
jboulter11 '19

这是现在做事的正确方法!^^苹果一直在改变事情。
振中

36

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

如果您收到错误“即使在info.plist中的“ Main Storyboard File base name”(主故事板文件库名称)和“ Target”中“ Deployment”下的“ Main Interface”下更改后,也未在捆绑包中找到名为“ Main”的故事板。

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

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

在此处输入图片说明

您的应用程序将开始运行。


1
这绝对是正确的答案。从“常规”>“主界面”下拉列表中设置主情节提要板显然已经不够了。
NRitH

1
谢谢你 删除“ Application Scene Manifest”键(及其所有子键)对我来说解决了这个问题。
格雷格·布朗

1
我完全不知道发生了什么,但这是
可行的

1
您救了我的命:)
优素福·卡米尔

17

在使用UISceneiOS 13和Xcode 11的项目中,您需要从中删除UISceneStoryboardFile密钥.plist

Xcode 11:

xcode11-uiscene

直接从文件更改:

uiscene-plist


15

我从手机上删除了该应用程序,进行了产品->清洁,然后再次加载。这就是我所需要的。


对于每次执行,如果删除,则只有其执行我...请在xcode 10.1
Aruna M中

12

我遇到了这个错误,但是,我打算完全删除情节提要。

从我的plist中删除“主Storyboard文件库名称”键可解决此错误。


10

捆绑包中找不到名为“ 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上尝试了此操作!


请帮助这个上午也面临这样的问题,在安装os10.14.1和xc0de 10.1..am 3天试图解决,但仍然..my项目工程xcode9.1好..之后
阿鲁娜中号

@ArunaM您是否尝试了答案中给出的上述步骤?这样做后状态如何?
Randika Vishman '18

1
这是我从项目中删除一个ViewController并导致相同错误的解决方案!
Slarty Bartfast

8

按照步骤:

1)首先点击您的故事板

2)然后单击文件检查器

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

屏幕截图


6

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

main.storyboard->只有main是情节提要名称


6

Swift 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>

4
  1. 打开故事板文件
  2. 然后单击文件检查器
  3. 然后选择“目标会员”并检查您的项目
  4. 对ViewController文件执行相同的操作 !!!!!如果在故事板上使用ViewController.swift或ViewController.m,则是重要的部分!

3

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

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

在此处输入图片说明


2

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

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

  • 在目标Build Phases中,从Copy Bundle Resources(如果列出)中删除Base.lproj文件夹,并确保列出了每个Storyboard,并分别复制了它们。

应用上述任一修补程序后,请确保您从“产品”菜单中一次清理了“生成文件夹”,否则这些修补程序可能无法正常工作。


1

删除plist中的行也导致我的应用程序出现黑屏。我通过启用情节提要的目标成员身份进行了修复


1

正如Kalpit Gajera所说,“打开项目的info.plist并删除屏幕快照中显示的所选行”。您只需从Info.plist中删除“ Main Storyboard文件库名称”。删除它后,清洁并运行,该程序将不再失败,但将显示黑屏。再次打开Info.plist,然后手动重新添加该行。问题已解决。


0

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

在此处输入图片说明


0

我的解决方案是:

当我在两个视图之间添加一个Seque连接,并且在Projekt配置中,部署目标小于8.0时,出现此错误。

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

因此,我将“部署目标”设置为8.0,错误消失了!另外一会儿,我取消了所有的Segue Connections,并通过IBAction,老派处理;-)



0

解决了我的问题,方法是.xml从中删除后缀Main.storyboard.xml file

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

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


0

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

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

如果您的情节提要添加到项目中(您可以从xcode实用程序区域的“项目文件检查器”部分中确定)复选框在目标成员区域中被标记

您只需Main.Storyboard从“复制捆绑资源”中删除(在中Build Phase),然后将其再次添加到“复制捆绑资源”中。这对我有用。在此处输入图片说明


-1

好的,这是一个过程。尝试许多不同的事情。在OS 10.11上运行xcode 6.4。无法找到“主要”问题。最后我要做的就是从Finder上也将main.storyboard移到我的桌面上。重新启动了xcode,现在它有一个红色的main.storyboard。我运行它几乎做同样的事情。然后右键单击项目文件夹,然后选择“将文件添加到...”选项。浏览到它所在的位置并打开它。那么当它在右边时,应该是身份检查器。单击位置下的小文件夹。再次浏览到该文件夹​​,然后选择选择。然后我跑了,它起作用了。阿们!!!


-1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.