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

时间:2013-10-08 05:51:10

标签: iphone ios objective-c xcode

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

我的目录中有文件,它在模拟器中运行正常。但是,在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

26 个答案:

答案 0 :(得分:69)

打开项目的info.plist并删除屏幕截图enter image description here

中显示的选定行

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

答案 1 :(得分:51)

您可以查看故事板的目标成员资格。可能存在问题所在:

应该是这样的:

Target Membership

答案 2 :(得分:14)

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

答案 3 :(得分:12)

对于在Xcode 11上遇到此问题的任何人,如果在减少情节提要的项目设置

时遇到此问题,以下是解决该问题的方法

(添加 ricardopereira 缺少的部分)

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

答案 4 :(得分:7)

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

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

答案 5 :(得分:6)

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

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

答案 6 :(得分:6)

找不到名为' Main'在捆绑

我能想到的原因:

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

解决:

  1. 选择Main.storyboard文件并尝试删除,并弹出如下对话框: enter image description here

  2. 点击"删除参考"按钮。

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

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

    enter image description here

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

  5. 清洁产品,重新构建,如果成功,大部分时间尝试运行都会成功。

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

答案 7 :(得分:5)

按照以下步骤操作:

1)首先点击你的故事板

2)然后单击文件检查器

3)然后选择" Target Membership"

Screen Shot

答案 8 :(得分:4)

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

Xcode 11:

xcode11-uiscene

直接从文件中更改:

uiscene-plist

答案 9 :(得分:3)

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

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

enter image description here

答案 10 :(得分:2)

另外,尝试删除 Storyboard 名称

enter image description here

答案 11 :(得分:2)

针对iOS 13.0及更高版本创建的应用程序的更新。

如果您收到错误消息“即使在info.plist中的“ Main Storyboard File base name”和“ Target”中的“ Main Interface”下更改后,也无法在捆绑包中找到名为“ Main”的Storyboard。

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

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

enter image description here

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

答案 12 :(得分:1)

  1. 打开情节提要文件
  2. 然后单击文件检查器
  3. 然后选择“目标会员”并检查您的项目
  4. 对ViewController文件进行相同的操作!!!!!如果将Storyboard使用ViewController.swift或ViewController.m,则重要!!

答案 13 :(得分:1)

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

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

  • 在目标构建阶段中,从 Copy Bundle Resources (如果列出)中删除 Base.lproj 文件夹,并确保列出每个故事板,并分别复制。

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

答案 14 :(得分:1)

正如Kalpit Gajera所说,"打开项目的info.plist并删除屏幕截图中显示的选定行"。您只需删除'主要故事板文件基本名称'来自Info.plist。删除它,清理并运行后,程序将不再失败,但会显示黑屏。再次打开Info.plist并手动添加该行。问题已解决。

答案 15 :(得分:1)

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

答案 16 :(得分:0)

通过从.xml删除后缀Main.storyboard.xml file解决了我的问题。

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

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

答案 17 :(得分:0)

我将Main.Storyboard文件移动到导致问题的“蓝色”子文件夹,我不得不按照这些说明添加子文件夹 Xcode 6.3 New File Issue

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

答案 18 :(得分:0)

Swift 5.1和xCode 11.2

就我而言,我忘记更改 Storyboard Name

中的 Info.plist

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>

答案 19 :(得分:0)

我的解决方案是:

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

好的,当你为IOS 6.0开发时很容易理解(例如)你不能使用Seque,因为Seque需要IOS 8.0或更高版本......; - )

所以,我将部署目标设置为8.0,错误消失了! 另一方面,我取消所有的Segue Connections并用IBAction处理它,旧学校; - )

答案 20 :(得分: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()

答案 21 :(得分:0)

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

您只需要从“复制捆绑资源”(在Main.Storyboard中)中删除Build Phase,然后再次将其添加到“复制捆绑资源”中。这对我有用。enter image description here

答案 22 :(得分:0)

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

enter image description here

答案 23 :(得分:-1)

好的,这是一个过程。尝试这么多不同的东西。在OS 10.11上运行xcode 6.4。有找不到'主'问题。我最终做的是将我的桌面上的main.storyboard从Finder.Did移开干净,构建并退出xcode。重新启动xcode现在它有一个红色的main.storyboard。我运行它几乎做同样的事情。然后我右键单击项目文件夹并选择添加文件选项...浏览到它的位置并打开它。然后当它在右边时应该是身份检查员。单击位置下的小文件夹。再次浏览到该文件夹​​并选择选择。然后我跑了,它运作了。阿门!!!

答案 24 :(得分:-1)

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

答案 25 :(得分:-2)

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

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