提问人:Carpetfizz 提问时间:10/8/2013 最后编辑:Remi GuanCarpetfizz 更新时间:11/20/2023 访问量:146898
在捆绑包中找不到名为“Main”的情节提要
Could not find a storyboard named 'Main' in bundle
问:
我收到一个奇怪的错误:尝试在真实的 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
答:
打开项目的 Info.plist 并删除屏幕截图中显示的所选行
2021年...
您还必须编辑 .请参阅下面的最新答案。UIApplicationSceneManifest
评论
您可以检查情节提要的目标成员资格。可能问题出在哪里:
它应该看起来像这样:
评论
选择 main.storyboard,将视图更改为 iOS 6.1 及更早版本,然后 xcode 会告诉你你需要做什么。
我遇到了这个错误,但是,我打算完全删除故事板。
从我的 plist 中删除“Main Storyboard file base name”键修复了该错误。
模拟器不区分大小写,但设备区分大小写。如果情节提要称为 MainStoryboard,而不是 MainStoryBoard,则会导致出现问题。 和 aslo * 不要使用扩展,只写故事板名称
main.storyboard ->唯一的 main 是情节提要名称
删除plist中的行也导致我的应用程序中出现黑屏。我通过启用故事板的目标成员身份来修复它
我的解决方案是:
当我在两个视图之间添加 Seque Connection 并且在 Projekt 配置中部署目标低于 8.0 时,我收到此错误。
好的,很容易理解,当您针对 IOS 6.0 进行开发时(例如),您不能使用 Seque,因为 Seque 需要 IOS 8.0 或更高版本。
因此,我将部署目标设置为 8.0,错误就消失了! 其他时候,我取消了所有 Segue 连接并使用 IBAction 处理它,老派。
我从手机中删除了该应用程序,执行了 Product-->Clean,然后再次加载。这就是我所做的一切。
评论
我所做的是将main.storyboard从Finder移到我的桌面上。进行了清理和构建并退出 Xcode。重新启动了 Xcode,现在它有一个红色的 main.storyboard。我运行它实际上做同样的事情。然后我右键单击项目文件夹并选择选项将文件添加到...浏览到它所在的位置并打开它。然后,当它在那里时,右边应该是身份检查器。单击位置下的小文件夹。再次浏览到该文件夹,然后选择“选择”。然后我跑了,它起作用了。
#Could 捆绑包中找不到名为“Main”的情节提要
我能想到的原因:
就我的 iOS 知识而言,这只是因为 XCode 无法在我的项目目录中找到对 Main.storyboard 文件的引用以将其复制到应用程序中。
分辨率:
单击“删除引用”按钮。
然后,从我可以在项目目录中找到 Main.storyboard 文件的实际位置,拖放到 XCode,然后再次从弹出的对话框中再次显示,如下所示:
我选择了“创建文件夹引用”(因为这是我打算做的一件事,因为我更改了项目的文件和文件夹结构)。但大多数情况下,选择“创建组”也可能有效。然后单击“完成”按钮。我的 Storyboard 文件已经在目录中,如屏幕截图所示,已经在目录中,如下所示:
Base.lproj
注意:在此步骤中要提醒的一件重要事情是,不要忘记在应用程序的“添加到目标”复选框上勾选它。
- 清理产品,重新构建,如果成功,大多数时候尝试运行它就会成功。
我在 XCode 7.3.1 和 iOS Sim 9.3 和 iPhone 6S 上尝试过这个!
评论
我正在将Main.Storyboard文件移动到导致问题的“蓝色”子文件夹,我必须按照以下说明添加子文件夹 Xcode 6.3 新文件问题
然后将Main.Storyboard文件移动到黄色子文件夹对我有用
请按照以下步骤操作:
1)首先点击你的故事板
2)然后单击文件检查器
3) 然后选择“目标会员”
正如 Kalpit Gajera 所说,“打开项目的 info.plist 并删除屏幕截图中显示的选定行”。您只需从 Info.plist 中删除“主情节提要文件基本名称”。删除它、清理并运行后,程序将不再失败,但会显示黑屏。再次打开 Info.plist 并手动重新添加该行。问题解决了。
- 打开情节提要文件
- 然后点按“文件检查器”
- 然后选择“目标会员资格”并检查您的项目
- 对 ViewController 文件执行相同的操作!!如果将 ViewController.swift 或 ViewController.m 与情节提要一起使用,则为重要部分!!
升级到 Xcode 10.1 后,两种不同的解决方案对我有用:
在文件>工作区(或项目)设置中。切换到旧版构建系统。
在目标构建阶段中,从“复制捆绑包资源”(如果列出)中删除 Base.lproj 文件夹,并确保单独列出和复制每个情节提要。
应用上述任一修复程序后,请确保从“产品”菜单中清理一次“构建文件夹”,否则修复程序可能无法正常工作。
通过从 ..xml
Main.storyboard.xml file
显然,后缀与我导入项目的版本不同。
因此,重命名文件(删除后缀)并重新启动,然后解决了问题。.xml
Project-> clean....
在 iOS 13 和 Xcode 11 中使用 UIScene
的项目中,您需要从 .UISceneStoryboardFile
.plist
Xcode 11:
直接从文件更改:
对于在 Xcode 11 上遇到此问题的任何人,如果您在进行无故事板项目设置时遇到此问题,以下是解决此问题的方法
(添加里卡多佩雷拉遗漏的一些部分)
1) 首先,删除 Main.storyboard 文件
2)接下来,转到PROJECT_NAME-> GENERAL
在主界面下拉列表中,删除文本 Main
3)现在转到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
评论
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() }
Swift 5.1 和 xCode 11.2
就我而言,我忘记在 Info.plist
中更改 Storyboard 名称
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>
针对为 iOS 13.0 及更高版本创建的应用程序的更新。(Xcode 11)
如果收到错误“即使在 Target 的 Info.plist 和 Target 的部署下更改了”主情节提要文件基名称“和”主界面“后,也无法在捆绑包中找到名为'Main'的情节提要”。
然后,您必须更改 info.plist 文件中的另一个条目。
- 打开 info.plist 文件。
- 展开“Application Scene Manifest”。
- 展开“场景配置”。
- 展开“应用程序会话角色”下的项 0,然后在此处更改情节提要名称。
您的应用程序将开始工作。
评论
选择要首先在情节提要左侧列表中显示的视图控制器,然后在属性检查器中确保其标题为“Main”,并且选中了“Is Initial View Controller”复选框。
当您在删除文件后从垃圾箱中恢复 main.storyboard 文件时,会出现此错误。我昨天也遇到了同样的问题。
您必须在 main.storyboard 的文件检查器中将 main.storyboard 的位置路径设置为相对于组。之后,在同一属性中,您必须确保应用程序目标上的复选标记(如附图所示)。
如果仍然有黑屏,请尝试在场景委托中添加以下代码
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()
如果你的故事板被添加到项目中(你将从 xcode 实用工具区域的“项目文件检查器”部分确定)
您只需从“复制捆绑包资源”(在 中)中删除,然后在“复制捆绑包资源”中再次添加它。这对我有用。Main.Storyboard
Build Phase
此外,请尝试删除 Storyboard 名称
就我而言,这是由于 Pod 库已过时
删除 /Pods 文件夹并为我修复它pod install
注意:如果某些 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)
对于名为我的项目,我将主情节提要的名称更改为 .除了在文件中更改它之外,我还必须在构建设置中更改它,如屏幕截图所示。ZHE Admin
home
info.plist
Xcode 14 中的新功能,设置主界面已移至 Targets -> Build Settings -> Info.plist values -> 。您需要从此处删除引用,而不是像以前那样在“部署信息”下删除引用。UIKit Main Storyboard File Base Name
评论
删除图中所示的“UIKit Main Storyboard File Base Name”中的名称。
在 XCode 14.1 中,如果您不想使用 Main.StoryBoard 并将其删除,请参阅步骤 4 中的图像并删除“Main”。
评论